我正在尝试在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的文档而不必列出整个类的文档?
答案 0 :(得分:0)
您正在访问实例上的属性,从而导致 getter被调用,并将结果传递给help()
函数。 getter返回的值没有文档字符串。
请注意,您实际上不是在使用help(class.property)
,而是在使用help(instance.property)
。
您需要在课堂上寻求帮助;如果您只有实例,请使用type()
给您上课:
help(type(cwr).str_obj)
,或者,如果您已经上过课,请寻求有关该课的帮助:
help(ClassWithStringProperty.str_obj)
help(instance)
自动检测到您有一个实例并为您提供有关类的帮助,但是对于属性的结果则无法做到,当实例与类(以及类的关系)的关系消失时help()
被调用。