n | class SizeDescriptor: | n | class Desc: |
| | | |
| def __get__(self, obj, cls): | | def __get__(self, obj, cls): |
n | if hasattr(obj, '_new_size'): | n | if hasattr(obj, '_value'): |
| return obj._new_size | | return obj._value |
| elif hasattr(obj, '__len__'): | | elif hasattr(obj, '__len__'): |
| return len(obj) | | return len(obj) |
| elif hasattr(obj, '__abs__'): | | elif hasattr(obj, '__abs__'): |
| return abs(obj) | | return abs(obj) |
| else: | | else: |
| return 0 | | return 0 |
| | | |
n | def __set__(self, obj, value): | n | def __set__(self, obj, val): |
| obj._new_size = value | | obj._value = val |
| | | |
| def __delete__(self, obj): | | def __delete__(self, obj): |
n | del obj._new_size | n | del obj._value |
| | | |
| def sizer(cls): | | def sizer(cls): |
t | cls.size = SizeDescriptor() | t | cls.size = Desc() |
| return cls | | return cls |