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 .
> >>> man.delProperty("name")
> >>> man.name <http://man.name>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "<stdin>", line 4, in <lambda>
> File "<stdin>", line 12, in _getProperty
> AttributeError: 'Person' object has no attribute '_name'
> >>> dir(man)
> ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__',
'__eq__', '__form
> at__', '__ge__', '__getattribute__', '__gt__', '__hash__',
'__init__', '__le__',
> '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__
> repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref_
> _', '_getProperty', '_setProperty', 'addProperty', 'delProperty',
'name']
You deleted the _name attribute where you're storing the value of the
name property. You didn't delete the name property, which is part of
the class, not the instance.
--
https://mail.python.org/mailman/listinfo/python-list