首页 > 解决方案 > 如何获取属性的文档字符串属性?

问题描述

当我学习 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'

标签: pythonpython-3.xpropertiesdescriptor

解决方案


首先,由于文档字符串是一个神奇的属性,它应该是一个double leading and trailing underscore表单。所以,__doc__不是doc

其次,当您尝试__doc__从类的实例访问时,它将触发实际对象的 doc 属性,在这种情况下是一个字符串。相反,尝试从类对象访问属性:

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

推荐阅读