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 |