class Metaclass(type):
def __new__(metacls, name, bases, attrs):
try:
return attrs['length']()
except KeyError:
pass
return type.__new__(metacls, name, bases, attrs)
def a(array):
class MyClass(metaclass=Metaclass):
def length():
return len(array)
return MyClass
print(a([1,2,3,4]).length()) # 4
print(a([1,2,3,4])) # 4
Y2xhc3MgTWV0YWNsYXNzKHR5cGUpOgogICAgZGVmIF9fbmV3X18obWV0YWNscywgbmFtZSwgYmFzZXMsIGF0dHJzKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICB0cnk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gYXR0cnNbJ2xlbmd0aCddKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgZXhjZXB0IEtleUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHBhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgYXR0cnMpCgpkZWYgYShhcnJheSk6CiAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhY2xhc3MpOgogICAgICAgIGRlZiBsZW5ndGgoKToKICAgICAgICAgICAgcmV0dXJuIGxlbihhcnJheSkKICAgIHJldHVybiBNeUNsYXNzCgpwcmludChhKFsxLDIsMyw0XSkubGVuZ3RoKCkpICMgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKcHJpbnQoYShbMSwyLDMsNF0pKSAgICAgICAgICAjICAgNAo=