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