如何在Sphinx中交叉引用由autodoc生成的函数?

85 投票
2 回答
42813 浏览
提问于 2025-04-18 00:14

我正在使用 Sphinxautodoc 功能,根据我 Python 库中的文档字符串生成文档。

关于交叉引用的语法,可以在 这里找到。

为了让文档的其他部分能够引用某个部分,必须在该部分前面加上一个标签。

我有一个 .rst(ReStructuredText)文件,里面是我某个类的内容。它使用了

.. autoclass:: classname
    :members:

来生成这个类的文档。

我的问题是,如何在文档的另一个 .rst 文件中引用这个类自动生成的方法呢?如果我试着在方法的文档字符串里放一个标签,Sphinx 会报错。如果我在方法标题前放标签,Sphinx 又识别不了。

有没有简单的方法可以做到这一点,还是说我必须在我的类文件里明确写出方法名,并在前面加上标签呢?

这里有一个例子,展示了在 [Python 文档2 中如何做我需要的事情(我假设它使用了 autodoc 功能,但我不太确定)。

2 个回答

12

除了已经提供的很棒的答案之外:

如果你想给某个模块(比如方法、函数、属性等)添加一个别名,可以使用以下语法:

:mod:`Alias Name <package.module>`

这样在文档中就会显示为对别名的引用,并且链接到你提供的模块。

127

你不需要添加标签。要引用一个Python的类、方法或其他文档对象,可以使用Python领域提供的标记方式。

比如,下面的代码定义了一个指向mymethod方法的引用:

:py:meth:`mymodule.MyClass.mymethod`

或者更简单一点(因为Python领域是默认的):

:meth:`mymodule.MyClass.mymethod`

你在问题中提到的TextWrapper.wrap的文档里包含了两个这样的引用(点击“显示源代码”可以看到reST的标记)。

撰写回答