n | class SizeDescriptor: | n | class Ins: |
| | | |
| def __init__(self): | | def __init__(self): |
n | self._values = None | n | self._size = None |
| | | |
| def __get__(self, instance, owner): | | def __get__(self, instance, owner): |
| if instance is None: | | if instance is None: |
| return self | | return self |
n | if self._values is not None: | n | if self._size is not None: |
| return self._values | | return self._size |
| if hasattr(instance, '__len__'): | | if hasattr(instance, '__len__'): |
| return len(instance) | | return len(instance) |
n | if hasattr(instance, '__abs__'): | n | elif hasattr(instance, '__abs__'): |
| return abs(instance) | | return abs(instance) |
n | | n | else: |
| return 0 | | return 0 |
| | | |
| def __set__(self, instance, value): | | def __set__(self, instance, value): |
n | self._values = value | n | self._size = value |
| | | |
| def __delete__(self, instance): | | def __delete__(self, instance): |
n | self._values = None | n | self._size = None |
| | | |
| def sizer(cls): | | def sizer(cls): |
t | cls.size = SizeDescriptor() | t | cls.size = Ins() |
| return cls | | return cls |