Sphinx meth角色不创建链接

Med*_*dia 5 python docstring cross-reference python-sphinx

在 python 模块中,在模块的文档字符串中我有以下内容:

\n
:meth:`my_method`\n
Run Code Online (Sandbox Code Playgroud)\n

我在当前模块中有以下课程:

\n
class GameP:\n\n    ...\n\n    def my_method(self):\n        return f"{self._name} {self.selected}"\n
Run Code Online (Sandbox Code Playgroud)\n

Sphinx 不会为此创建链接,但在 Sphinx 文档中我们有:

\n
\n

通常,首先搜索这些角色中的名称,无需任何进一步的限定,然后在前面加上当前模块名称,然后在前面加上当前模块和类名称(如果有)。如果在名称前添加点,则此顺序相反。例如,在 Python\xe2\x80\x99s codecs127 模块的文档中,:py:func:open始终指内置函数,而 :py:func:.open指 codecs.open()。

\n
\n

为什么粗体部分不适合我?:meth:角色没有为我建立链接。

\n

mzj*_*zjn 4

恕我直言,该文档不是很清楚,但如果您使用:meth:`.my_method` (带点)它就可以工作。这个点让 Sphinx 寻找my_method任何地方的匹配项。

如果交叉引用位于类的文档字符串中,则不需要点GameP。但在这种情况下,交叉引用位于模块文档字符串中,并且在模块级别上没有“当前类名”。

  • 我认为*如果你在名字前面加一个点,这个顺序就会颠倒*不清楚。但它也说*如果名称以点为前缀,并且没有找到精确匹配,则将目标作为后缀,并搜索具有该后缀的所有对象名称。*这就是我说 Sphinx 将随处寻找匹配项。 (2认同)