Как получить атрибут строки doc свойства?

1

Когда я изучал дескрипторы Python, я столкнулся с этим примером

class Person(object):
    def __init__(self):
        self._name = ''

    def fget(self):
        print("Getting: %s" % self._name)
        return self._name

    def fset(self, name):
        print("Setting: %s" % name)
        self._name = name.title()

    def fdel(self):
        print("Deleting: %s" %self._name)
        del self._name

    name = property(fget, fset, fdel, "I'm the property.")

который использует функцию property. В статье говорится, что четвертый параметр - doc-docstring,

p1 = Person()
p1.name = "Islam"
print(p1.name)
print(p1.name.doc)
del p1.name

но когда я пытаюсь добраться до документа, он поднимает

AttributeError: 'str' object has no attribute 'doc'
Теги:
python-3.x
properties

1 ответ

1
Лучший ответ

Во-первых, поскольку строка doc является магическим атрибутом, она должна быть в __double_leading_and_trailing_underscore__ из, следовательно, это __doc__ not doc. Во-вторых, когда вы пытаетесь получить доступ к __doc__ из экземпляра класса, он инициирует атрибут doc фактического объекта, который в этом случае является строкой. Вместо этого попытайтесь получить доступ к атрибуту из объекта класса:

In [74]: Person.name.__doc__
Out[74]: "I'm the property."

Ещё вопросы

Сообщество Overcoder
Наверх
Меню