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