| 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 |