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

Mat*_*amy 40 python methods restructuredtext hyperlink python-sphinx

我正在使用Sphinx autodoc功能根据我的Python库的文档字符串生成文档.

交叉引用的语法可在此处找到

标签必须位于该部分之前,以便允许从文档的其他区域引用该部分.

我所拥有的是我的一个类的.rst(ReStructeredText)文件.它用

.. autoclass:: classname
    :members:
Run Code Online (Sandbox Code Playgroud)

为类生成文档.

我的问题是,如何从文档中的另一个.rst文档引用该类的自动生成方法?如果我尝试在方法的文档字符串中放置一个标签,Sphinx会抱怨.如果我尝试在方法标题之前放置一个标签,Sphinx就无法识别它.

有没有一种简单的方法可以做到这一点,或者我是否必须在我的类文件中明确地写入方法名称并在其前面添加标签?

这是一个示例[Python文档2中的参考实现我需要的东西(我假设它使用了autodoc功能,虽然我不确定)

mzj*_*zjn 53

您无需添加标签.要引用Python类,方法或其他文档化对象,请使用Python域提供的标记.

例如,以下定义了对mymethod方法的交叉引用:

:py:meth:`mymodule.MyClass.mymethod`
Run Code Online (Sandbox Code Playgroud)

甚至更简单(因为Python域是默认的):

:meth:`mymodule.MyClass.mymethod`
Run Code Online (Sandbox Code Playgroud)

TextWrapper.wrap您在问题中链接到的文档包括两种此类交叉引用(单击"显示源"以查看reST标记).

  • 和`:func:…`函数。有关如何交叉引用Python角色的完整列表,请参见[here](http://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referenceencing-python-objects)。 (6认同)
  • 和`:mod:...` 用于模块。 (4认同)

S3D*_*DEV 11

除了已经提供的出色答案之外:

要将别名添加到引用的模块(方法、函数、属性等),请使用以下语法:

:mod:`Alias Name <package.module>`
Run Code Online (Sandbox Code Playgroud)

Alias Name这将显示为文档中的参考,并链接到所提供的模块。