Это исправленная версия класса DocProperty DzinX:
class DocProperty(object):
def __init__(self, name, doc):
self._name = '_'+name
self.__doc__ = doc
def __get__(self, obj, objtype=None):
if obj is None:
return self
return getattr(obj, self._name)
def __set__(self, obj, value):
setattr(obj, self._name, value)
def __delete__(self, obj):
delattr(obj, self._name)
Использование:
class SomeClass(object):
p1 = DocProperty('p1', 'some docs')
Обратите внимание, что использование этого сделает ваш код менее эффективным - каждый доступ к атрибутам становится дороже. Но я предполагаю, что в некоторых контекстах возможность добавления документов может стоить того (особенно если эффективность не имеет значения в вашем контексте).