[Python-Dev] The decorator(s) module
Thomas Wouters
thomas at xs4all.net
Sat Feb 11 13:51:02 CET 2006
On Fri, Feb 10, 2006 at 10:32:23PM +0100, Georg Brandl wrote:
> Unfortunately, a @property decorator is impossible...
Depends. You can do, e.g.,
def propertydef(propertydesc):
data = propertydesc()
if not data:
raise ValueError, "Invalid property descriptors"
getter, setter, deller = (data + (None, None))[:3]
return property(fget=getter, fset=setter, fdel=deller,
doc=propertydesc.__doc__)
and use it like:
class X(object):
def __init__(self):
self._prop = None
@propertydef
def prop():
"Public, read-only access to self._prop"
def getter(self):
return self._prop
return (getter,)
@propertydef
def rwprop():
"Public read-write access to self._prop"
def getter(self):
return self._prop
def setter(self, val):
self._prop = val
def deller(self):
self._prop = None
return (getter, setter, deller)
@propertydef
def hiddenprop():
"Public access to a value stored in a closure"
prop = [None]
def getter(self):
return prop[0]
def setter(self, val):
prop[0] = val
def deller(self):
prop[0] = None
return (getter, setter, deller)
--
Thomas Wouters <thomas at xs4all.net>
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
More information about the Python-Dev
mailing list