我有一个包裹:
foo.py有一个Foo类。在__init__.py中我导入了类Foo,因此用户可以这样做:
from foo import Foo
Sphinx正确地将Foo记录为foo.foo.Foo,这是正确的,但却让用户感到困惑。如何让Sphinx将其记录为foo.Foo?
将整个模块文档与正确的模块相关联也很重要。
Sphinx记录了一些名为:
的文件..module:: module.name
但是当我在foo.py
文件的第一条评论中使用它时,该文档仍归于foo.foo
。
答案 0 :(得分:2)
__module__
属性的值是定义类/函数/方法的模块的名称(请参阅https://docs.python.org/2.7/reference/datamodel.html)。该属性是可写的,因此可以在__init __。py:
Foo.__module__ = "foo"
现在,如果您使用.. automodule:: foo
,Foo
类的限定名称将在生成的模块文档中显示为foo.Foo
。
作为__module__
的替代方法 - 您可以使用autoclass
代替automodule
。
.. autoclass:: foo.Foo
将生成所需的输出。
答案 1 :(得分:0)
请参阅 this 答案以获得解决方案。
在您的情况下,将您的 __init__.py
文件修改为:
# This lets you use foo.foo.Foo as foo.Foo in your code.
from .foo import Foo
# This lets Sphinx know you want to document foo.foo.Foo as foo.Foo.
__all__ = ['Foo']