Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #76911
| Date | 2014-08-24 06:49 +0800 |
|---|---|
| From | luofeiyu <elearn2014@gmail.com> |
| Subject | why the attribute be deleted still in dir(man)? |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.13362.1408834228.18130.python-list@python.org> (permalink) |
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)
>>> man=Person()
>>> 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']
>>> man.addProperty("name")
>>> man.name="john"
>>> 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', '_name', '_setProperty', 'addProperty',
'delProperty', 'name
']
>>> man.name
'John'
>>> man.delProperty("name")
>>> 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']
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
why the attribute be deleted still in dir(man)? luofeiyu <elearn2014@gmail.com> - 2014-08-24 06:49 +0800
csiph-web