如何在没有模块名称的情况下记录类?

Maj*_*les 15 python python-sphinx

我正在尝试使用sphinx并成功生成html文件来记录python包.我正在记录的包由一组文件组成*.py,大多数包含一个类,其中几个文件是定义了函数的真正模块.我不需要暴露每个类都在一个模块中的事实,所以我from__init__.py文件中添加了合适的语句,例如

from base import Base
Run Code Online (Sandbox Code Playgroud)

这样用户就可以使用该import pkg命令,然后不必指定包含该类的模块:

import pkg
class MyBase(pkg.Base):  # instead of pkg.base.Base ...
...
Run Code Online (Sandbox Code Playgroud)

问题在于,斯芬克斯坚持将课程记录为pkg.base.Base.我试图设置add_module_names = Falseconf.py.然而,这导致狮身人面像显示出简单的类Base而不是pkg.Base.此外,这也破坏了作为模块的几个*.py文件的文档.

我如何sphinx将课程作为一个班级pkg.Base?如何add_module_names为每个*.py文件选择性地设置指令?

mzj*_*zjn 8

这是一种完成OP要求的方法:

  1. 添加__all__列表pkg/__init__.py:

    from base import Base    # Or use 'from base import *'
    
    __all__ = ["Base"]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用.. automodule:: pkg在.rst文件.

现在,Sphinx将输出显示类名称的文档,pkg.Base而不是pkg.base.Base.

  • 您的意思是“Base”的“Bases”被指定为“pkg.base.ParentClass”而不是“pkg.ParentClass”? (2认同)

小智 -4

简短的回答:你不应该。只需将 sphinx 指向您的代码目录即可。Sphinx 记录代码并显示模块层次结构。最终如何导入模块完全取决于开发人员,而不是文档工具的责任。

  • 我不同意。文档应该反映库作者想要的包结构。 (20认同)