why the attribute be deleted still in dir(man)?

Ned Batchelder ned at nedbatchelder.com
Sat Aug 23 20:17:00 EDT 2014


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




More information about the Python-list mailing list