链接到Python文档字符串中的类方法

2022-04-05 00:00:00 python python-sphinx spyder

问题描述

我想从同一个类的另一个方法的文档字符串中添加一个指向我的类中的方法的链接。我希望该链接在狮身人面像中工作,最好也在Spyder和其他Python IDE中工作。

我尝试了几个选项,只找到一个有效的选项,但它很麻烦。

假设mymodule.py

中的以下结构
def class MyClass():
    def foo(self):
        print 'foo'
    def bar(self):
        """This method does the same as <link to foo>"""
        print 'foo'

我尝试了<link to foo>的以下选项:

  • :func:`foo`
  • :func:`self.foo`
  • :func:`MyClass.foo`
  • :func:`mymode.MyClass.foo`
唯一能有效生成链接的链接是:func:`mymode.MyClass.foo`,但链接显示为mymodule.MyClass.foo(),我想要一个显示为foo()foo的链接。
上面的选项都不会在Spyder中生成链接。

感谢您的帮助。


解决方案

适用于Sphinx的解决方案是在引用前面加上~

根据Cross-referencing Syntax上的Sphinx文档,

如果为内容添加前缀~,则链接文本将只是最后一个 目标的组件。例如,:PY:METH:~Queue.Queue.get将 请参考Queue.Queue.Get,但仅将GET显示为链接文本。

所以答案是:

class MyClass():
    def foo(self):
        print 'foo'
    def bar(self):
        """This method does the same as :func:`~mymodule.MyClass.foo`"""
        print 'foo'

这将生成如下所示的html:This method does the same as foo()foo()是一个链接。

但是,请注意,这可能不会在Spyder中显示为链接。

相关文章