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

luofeiyu elearn2014 at gmail.com
Sat Aug 23 19:35:47 EDT 2014


dear ChrisA ,dynamic is python feature, it is to create descriptor in 
run time ,
that is the meaning in the codes,and maybe it is a bug:

the attribute  can be displayed  in dir(man)  after be deleted.




On 8/24/2014 6:56 AM, Chris Angelico wrote:
> On Sun, Aug 24, 2014 at 8:49 AM, luofeiyu <elearn2014 at gmail.com> wrote:
>> 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)
> Look. Forget properties. Python is not Java or C++, and you almost
> never need this kind of thing. Read up a tutorial on doing classes
> Python's way, and you'll find that all this sort of thing just doesn't
> matter. You've come here with a significant number of questions about
> properties, and it looks as if you're trying to do everything through
> them - which is utterly and completely useless, especially when you
> use properties to be as dynamic as you're doing. Just don't do it.
>
> ChrisA




More information about the Python-list mailing list