| n | def sizer(cls): | n | def sizer(target_class): | 
            |  |  |  |  | 
            | n | def get_size(self): | n | def retrieve_size(instance): | 
            |  | if hasattr(self, '_size_override'): |  | if hasattr(instance, '_custom_size'): | 
            |  | return self._size_override |  | return instance._custom_size | 
            |  | if hasattr(self, '__len__'): |  | if hasattr(instance, '__len__'): | 
            |  | return len(self) |  | return len(instance) | 
            |  | try: |  | try: | 
            | n | return abs(self) | n | return abs(instance) | 
            |  | except TypeError: |  | except TypeError: | 
            |  | return 0 |  | return 0 | 
            |  |  |  |  | 
            | n | def set_size(self, value): | n | def assign_size(instance, value): | 
            |  | self._size_override = value |  | instance._custom_size = value | 
            |  |  |  |  | 
            | t | def del_size(self): | t | def remove_size(instance): | 
            |  | if hasattr(self, '_size_override'): |  | if hasattr(instance, '_custom_size'): | 
            |  | del self._size_override |  | del instance._custom_size | 
            |  | setattr(cls, 'size', property(get_size, set_size, del_size)) |  | setattr(target_class, 'size', property(retrieve_size, assign_size, r | 
            |  |  |  | emove_size)) | 
            |  | return cls |  | return target_class |