| f | def sizer(cls): | f | def sizer(cls): | 
             |  |  |  | 
            | n |     def calculate_size(instance): | n |     def get_size(self): | 
             |         if hasattr(instance, '_custom_size'): |  |         if hasattr(self, '_custom_size'): | 
             |             return instance._custom_size |  |             return self._custom_size | 
             |         if hasattr(instance, '__len__'): |  |         if hasattr(self, '__len__'): | 
             |             return len(instance) |  |             return len(self) | 
             |         if hasattr(instance, '__abs__'): |  |         elif hasattr(self, '__abs__'): | 
             |             return abs(instance) |  |             return abs(self) | 
             |  |  |         else: | 
             |         return 0 |  |             return 0 | 
             |  |  |  | 
            | n |     def set_custom_size(instance, value): | n |     def set_size(self, val): | 
             |         instance._custom_size = value |  |         self._custom_size = val | 
             |  |  |  | 
            | t |     def delete_custom_size(instance): | t |     def del_size(self): | 
             |         if hasattr(instance, '_custom_size'): |  |         if hasattr(self, '_custom_size'): | 
             |             del instance._custom_size |  |             del self._custom_size | 
             |     cls.size = property(calculate_size, set_custom_size, delete_custom_s |  |     cls.size = property(get_size, set_size, del_size) | 
             | ize) |  |   | 
             |     return cls |  |     return cls |