Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class pproperty(object):
- def __init__(self, fget, fset=None, fdel=None, doc=None):
- self.fget = fget
- self.fset = fset
- self.fdel = fdel
- self.doc = doc or fget.__doc__
- self.__staged_getters = []
- self.__staged_setters = []
- self.__staged_deleters = []
- def __get__(self, instance, owner):
- if instance:
- return self.fget(instance)
- else:
- return self
- def __set__(self, instance, value):
- if self.fset:
- self.fset(instance, value)
- else:
- raise AttributeError('can\'t set attribute')
- def __delete__(self, instance):
- if self.fdel:
- self.fdel(instance)
- else:
- raise AttributeError('can\'t delete attribute')
- def copy(self, **override_kwargs):
- curr_kwargs = {
- 'fget': self.fget,
- 'fset': self.fset,
- 'fdel': self.fdel,
- 'doc': self.doc,
- }
- curr_kwargs.update(override_kwargs)
- return self.__class__(**curr_kwargs)
- def getter(self, fget):
- return self.copy(fget=fget)
- def setter(self, fset):
- return self.copy(fset=fset)
- def deleter(self, fdel):
- return self.copy(fdel=fdel)
Advertisement
Add Comment
Please, Sign In to add comment