(original) (raw)
import __builtin__ class property(__builtin__.property): __slots__ = () @classmethod def get(cls, base): return PropertyCombiner(cls, base).get @classmethod def set(cls, base): return PropertyCombiner(cls, base).set @classmethod def delete(cls, base): return PropertyCombiner(cls, base).delete class PropertyCombiner(object): __slots__ = "cls", "base" def __init__(self, cls, base): assert isinstance(base, __builtin__.property) assert issubclass(cls, property) self.cls = cls self.base = base def get(self, fget): return self.cls(fget, self.base.fset, self.base.fdel) def set(self, fset): return self.cls(self.base.fget, fset, self.base.fdel) def delete(self, fdel): return self.cls(self.base.fget, self.base.fset, fdel)