Python属性docstring仅在整个类上打印以提供帮助

时间:2019-03-06 17:58:41

标签: python python-2.7 properties docstring

我正在尝试在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

当我导入并尝试获取帮助时,它适用于整个类,但不适用于单个属性:

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文档。

我如何允许自己访问@property的文档而不必列出整个类的文档?

1 个答案:

答案 0 :(得分:0)

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

请注意,您实际上不是在使用help(class.property),而是在使用help(instance.property)

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

help(type(cwr).str_obj)

,或者,如果您已经上过课,请寻求有关该课的帮助:

help(ClassWithStringProperty.str_obj)

help(instance)自动检测到您有一个实例并为您提供有关类的帮助,但是对于属性的结果则无法做到,当实例与类(以及类的关系)的关系消失时help()被调用。