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 <[EMAIL PROTECTED]>
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com