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

Reply via email to