Python 属性 docstring 只打印整体帮助 class

Python property docstring only prints for help on the whole class

我正在尝试在 python 模块中记录 @property,但无法在 属性 的帮助中显示文档字符串。我想打电话给 help(class.property) 以仅打印 属性.

的帮助

这是一个例子:

class ClassWithStringProperty(object):
    def __init__(self):
        self._str_obj = "'{0:02d}, {1}'.format(thingy['number'], thingy['description']"

    @property
    def str_obj(self):
        """
        A configurable formatting string that is eval()'ed for data export
        """
        return self._str_obj

    @str_obj.setter
    def str_obj(self, str_obj):
        self._str_obj = str_obj

当我导入并尝试寻求帮助时,它对整体有效 class,但对个人无效 属性:

In [1]: from property_docstring import ClassWithStringProperty
In [2]: cwp = ClassWithStringProperty()
In [4]: help(cwp)
Help on ClassWithStringProperty in module property_docstring object:

class ClassWithStringProperty(__builtin__.object)  
 |  Methods defined here:
 |
 |  __init__(self)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables (if defined)
 |
 |  __weakref__
 |      list of weak references to the object (if defined)
 |
 |  str_obj
 |      A configurable formatting string that is eval()'ed for data export

In [5]: help(cwp.str_obj)
no Python documentation found for "'{0:02d}, {1}'.format(thingy['number'], thingy['description']"

正如您在 In [4] 的输出中看到的那样,文档字符串打印在 str_obj 下,但在 In [5] 中它表示没有 Python 文档。

我如何允许单独访问 @属性 的文档,而不必列出整个 class 的文档?

您正在访问实例上的属性,导致调用 getter 并将结果传递给 help() 函数。 getter 返回的值没有文档字符串。

请注意,您实际上并没有在这里使用 help(class.property),您使用的是 help(<em><strong>instance</strong></em> .属性).

您需要在 class 上寻求帮助;如果你只有实例,使用 type() 给你 class:

help(type(cwr).str_obj)

或者,如果您已经拥有 class,请在 class 上寻求帮助:

help(ClassWithStringProperty.str_obj)

help(instance) 自动检测您有一个实例并在 class 上为您提供帮助,但是对于属性的结果、与实例的关系(等等class) 在调用 help() 时消失了。