On 8/23/14 7:44 PM, luofeiyu wrote:
Think for your remark " You didn't delete the name property, which is
part of the class, not the instance."
I fix my codes to get the target done.
class Person(object):
def addProperty(self, attribute):
getter = lambda self: self._getProperty(attribute)
setter = lambda self, value: self._setProperty(attribute,
value)
deletter = lambda self:self.delProperty(attribute)
setattr(self.__class__, attribute,
property(fget=getter,fset=setter,fdel=deletter,doc="Auto-generated method"))
def _setProperty(self, attribute, value):
setattr(self, '_' + attribute, value.title())
def _getProperty(self, attribute):
return getattr(self, '_' + attribute)
def delProperty(self,attribute):
delattr(self,'_' + attribute)
delattr(self.__class__, attribute)
I am so happy .
Seriously, you should listen to the people here advising you to simplify
this. This is a lot of complexity to do not very much.
Why not just:
p = Person()
p.foo = 17
What is the point of dynamically defining properties that simply front
attributes with a slightly different name? Just use an attribute.
--
Ned Batchelder, http://nedbatchelder.com
--
https://mail.python.org/mailman/listinfo/python-list