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

Reply via email to