如何在Python中获取class属性的文档字符串

时间:2019-04-14 06:43:10

标签: python

最近,我想重复使用类属性的文档来进行一些用户友好的自我描述,但是找不到找到该类属性的文档字符串的方法。

考虑示例:

>>> class Foo(object):
...     """I am a doc-string of the foo class"""    
...     bar: int = 42
...     """I am a doc-string of the bar attribute"""
...     
>>> Foo.__doc__
'I am a doc-string of the foo class'
>>> Foo.bar.__doc__
"int([x]) -> integer\nint(x, base=10) -> integer\n\nConvert a number or string to an integer, or return 0 if no arguments\nare given.  If x is a number, return x.__int__().  For floating point\nnumbers, this truncates towards zero.\n\nIf x is not a number or if base is given, then x must be a string,\nbytes, or bytearray instance representing an integer literal in the\ngiven base.  The literal can be preceded by '+' or '-' and be surrounded\nby whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.\nBase 0 means to interpret the base from the string as an integer literal.\n>>> int('0b100', base=0)\n4"

访问该类的属性的文档会给出带注释类型的文档字符串。

有没有可能,最好是没有额外的自由或进口?

1 个答案:

答案 0 :(得分:0)

不幸的是,这似乎不可能。

“其他文档字符串”部分中的现有PEP-0258解释说,类属性的文档字符串未保留在运行时中。

  

许多程序员想在以下方面广泛使用文档字符串   API文档。但是,文档字符串确实会占用运行空间   程序,因此某些程序员不愿意“膨胀”他们的代码。   另外,并非所有API文档都适用于交互式   显示 doc 的环境。

     

Docutils的docstring提取工具将连接所有字符串   文字表达出现在定义的开头或   经过简单的分配。仅定义中的第一个字符串会   以 doc 的形式提供,并且可用于简短的用法文字   用于互动会议;后续字符串文字和所有属性   docstrings被Python字节码编译器忽略,并且可能   包含更广泛的API信息。