从类的交叉引用中省略模块名称

1 投票
1 回答
679 浏览
提问于 2025-04-18 04:59

背景

我有一个项目叫做 ciscoconfparse,这个项目的文档是用 Sphinx 来编写的;项目的文档可以在 这里 找到。

这个 源代码目录 里有多个文件:

  • ciscoconfparse.py 里面包含了 CiscoConfParseIOSConfigList 这两个类
  • models_cisco.py 里面有一个叫 IOSCfgLine 的类

这是我如何记录 IOSCfgLine 的一个例子……

.. module:: models_cisco

IOSCfgLine Object
-----------------

.. autoclass:: IOSCfgLine
      :members:
      :inherited-members:

现在的 Sphinx 文档中,类的超链接看起来很糟糕,包含了文件名和类名;比如说 models_cisco.IOSCfgLine 就是一个例子。

文档截图示例: enter image description here

问题

我该如何使用 autoclass 来记录不同 Python 文件中的类,并且在生成的文档中只显示类名,而不是连同文件名一起显示?换句话说,我只想看到 IOSCfgLine 的超链接,而不是 models_cisco.IOSCfgLine

1 个回答

2

如果你只想在链接中显示名字本身,可以在链接中使用 ~ 符号:

:class:`~models_cisco.IOSCfgLine`

这样显示的结果会是 IOSCfgLine,而不是 models_cisco.IOSCfgLine


不过,如果我没看错的话,你的代码库中所有的类都在顶层包的命名空间里。所以你也可以这样来写文档(也就是不需要 .. module:: models_cisco,而是 .. module:: ciscoconfparse)。

撰写回答