如何在Python中logging字段和属性?

在Python中logging类或方法很容易:

class Something: """ Description of the class. """ def do_it(self): """ Description of the method. """ pass class_variable = 1 # How to comment? @property def give_me_some_special_dict(self): """ doesn't work! Doc of general dict will be shown. """ return {} 

但是如何在API文档中logging字段或属性的使用或help

Python有一个定义文档string约定的PEP( 257 )。 关于属性的文档,它指出:

在模块,类或__init__方法的顶级简单赋值之后立即出现的string文字被称为“属性文档string”。

所以以下是被认为是有logging的属性:

 class Foo(object): velocity = 1 """Foo's initial velocity""" def __init__(self, args): self.location = 0.0 """Foo's initial location""" 

(编辑:修复第二个文档string)

在python解释器中使用帮助的属性文档适用于我,请参阅proprerty文档 。 注意:IPython的魔术帮助操作符? ,没有显示属性docstring。

 >>> class foo(object): >>> def __init__(self, bar): >>> self._bar = bar >>> @property >>> def bar(self): >>> """bar property""" >>> return self._bar >>> help(foo.bar) Help on property: bar property 

在Sphinx中,您必须使用:members:指令来logging属性,参见autodoc文档 。 对我来说就像一个魅力!

在以下情况下,Sphinx也将logging属性:members:被使用。 属性的文档string可以作为属性前面的注释给出,但在哈希标记EG #: the foo attribute后面使用冒号。 从狮身人面像autodoc文档:

对于模块数据成员和类属性,文档可以用特殊的格式(使用#:开始注释,而不是#),或者在定义之后的文档string中放入注释中。 评论需要在定义之前自己定义,或者在同一行之后立即进行。 后一种forms仅限于一行。

在类docstring中logging可以自由访问的属性,或者将它们变成属性。 你正在logging属性,问题可能是在2.x和老式的类,这不支持描述符 – 在这种情况下inheritanceobject

通过在文档中使用Sphinx符号/ 重构文本 ,您可以自动从Python源代码生成格式良好的文档。 它也支持函数的参数和返回值 – 据我所知没有任何字段,但是你可以很容易地为它们创build一个列表。