def propertx(fct): ''' Decorator to simplify the use of property. Like @property for attrs who need more than a getter. For getter only property use @property. ''' arg=[None, None, None, None] for i, f in enumerate(fct()): arg[i] = f if not arg[3] : arg[3]=fct.__doc__ return property(*arg) if __name__=='__main__': class example(object): def __init__(self): self._a=100 @propertx def bar(): # BAR doc def get(self): return self._a def set(self, val): self._a=val return get, set foo=example() print foo.bar foo.bar='egg' print foo.bar