如何使Sphinx尊重使用__init__.py将类导入包中

Aar*_*ron 9 python python-sphinx

我有一个包裹:

  • FOO
    • foo.py
    • bar.py
    • __init__.py

foo.py有一个Foo类.在__init__.py中我导入类Foo,以便用户可以执行以下操作:

from foo import Foo
Run Code Online (Sandbox Code Playgroud)

Sphinx正确地将Foo记录为foo.foo.Foo,这是正确的,但却让用户感到困惑.如何让Sphinx将其记录为foo.Foo?

获得与正确模块关联的整体模块文档也很重要.

Sphinx记录了一些名为:

..module:: module.name
Run Code Online (Sandbox Code Playgroud)

但是当我在foo.py文件的第一个评论中使用它时,文档仍然归于foo.foo.

mzj*_*zjn 4

该属性的值__module__是定义类/函数/方法的模块的名称(请参阅https://docs.python.org/2.7/reference/datamodel.html)。该属性是可写的,因此可以在 __init__.py 中重新定义:

Foo.__module__ = "foo"
Run Code Online (Sandbox Code Playgroud)

现在,如果您使用.. automodule:: foo,类的限定名称Foo将显示foo.Foo在生成的模块文档中。


作为 -fiddle 的替代方案__module__,您可以使用autoclass代替automodule

.. autoclass:: foo.Foo将产生想要的输出。