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']


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to