n | def sizer(clas): | n | def sizer(cls): |
| def wrapper(*args, **kwargs): | | def wrapper(*args, **kwargs): |
n | | n | class Dsc: |
| class NonDataDescriptor: | | |
| def __get__(self, obj, cls): | | def __get__(self, obj, cls): |
| if hasattr(obj, "__len__"): | | if hasattr(obj, "__len__"): |
| return len(obj) | | return len(obj) |
n | elif hasattr(obj, "__abs__"): | n | if hasattr(obj, "__abs__"): |
| return abs(obj) | | return abs(obj) |
t | else: | t | |
| return 0 | | return 0 |
| | | |
| clas.size = NonDataDescriptor() | | cls.size = Dsc() |
| return clas(*args, **kwargs) | | return cls(*args, **kwargs) |
| return wrapper | | return wrapper |
| | | |