"""
Rather than defining your get/set/del methods at the class level, as is usually done, e.g.
class MyClass(object):
def __init__(self):
self._foo = "foo"
def getfoo(self):
return self._foo
def setfoo(self, value):
self._foo = value
def delfoo(self):
del self._foo
foo = property(getfoo, setfoo, delfoo, "property foo's doc string")
I would like to suggest the following alternative idiom:
"""
class MyClass(object):
def __init__(self):
self._foo = "foo"
self._bar = "bar"
def foo():
doc = "property foo's doc string"
def fget(self):
return self._foo
def fset(self, value):
self._foo = value
def fdel(self):
del self._foo
return locals() # credit: David Niergarth
foo = property(**foo())
def bar():
doc = "bar is readonly"
def fget(self):
return self._bar
return locals()
bar = property(**bar())