f | import sys | f | import sys |
| | | |
n | class SizeDescriptor: | n | class SizeD: |
| | | |
| def __init__(self): | | def __init__(self): |
n | self._custom_value = None | n | self._size = None |
| | | |
n | def __get__(self, instance, owner): | n | def __get__(self, obj, cls): |
| if self._custom_value is not None: | | if self._size is not None: |
| return self._custom_value | | return self._size |
| if hasattr(instance, '__len__'): | | if hasattr(obj, '__len__'): |
| return len(instance) | | return len(obj) |
| if hasattr(instance, '__abs__'): | | if hasattr(obj, '__abs__'): |
| return abs(instance) | | return abs(obj) |
| return 0 | | return 0 |
| | | |
n | def __set__(self, instance, new_value): | n | def __set__(self, obj, value): |
| self._custom_value = new_value | | self._size = value |
| | | |
n | def __delete__(self, instance): | n | def __delete__(self, obj): |
| self._custom_value = None | | self._size = None |
| | | |
| def sizer(cls): | | def sizer(cls): |
t | cls.size = SizeDescriptor() | t | cls.size = SizeD() |
| return cls | | return cls |
| exec(sys.stdin.read()) | | exec(sys.stdin.read()) |