Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #76917

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

Date 2014-08-24 07:44 +0800
From luofeiyu <elearn2014@gmail.com>
Subject Re: why the attribute be deleted still in dir(man)?
References <53F91A91.6080205@gmail.com> <CALwzidnb2MpyiXCUftbHZLkBWbMYBKbWHZFQMS0vYnxH6NbXOw@mail.gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.13368.1408837517.18130.python-list@python.org> (permalink)

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

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.
>
>

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: why the attribute be deleted still in dir(man)? luofeiyu <elearn2014@gmail.com> - 2014-08-24 07:44 +0800

csiph-web