sar*_*ele 64 python python-sphinx spyder
我想从同一个类的另一个方法的docstring中添加一个到我的类中的方法的链接.我希望链接在sphinx中工作,并且优先在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'
Run Code Online (Sandbox Code Playgroud)
我尝试了以下选项<link to foo>:
有效生成链接的唯一一个是:func:`mymodule.MyClass.foo`,但链接显示为mymodule.MyClass.foo(),我想要一个显示为foo()或的链接foo.
上述选项均未在Spyder中生成链接.
谢谢你的帮助.
sar*_*ele 69
适用于Sphinx的解决方案是在引用前加上~.所以答案是:
class MyClass():
def foo(self):
print 'foo'
def bar(self):
"""This method does the same as :func:`~mymodule.MyClass.foo`"""
print 'foo'
Run Code Online (Sandbox Code Playgroud)
这导致html看起来像这样:~Queue.Queue.get,并且 This method does the same as foo()是一个链接.
但是,在Spyder中它仍然不能作为链接.
感谢@devin_s指出我在Sphinx文档中的正确部分:https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referencing-python-objects
dev*_*n_s 31
如果要手动指定可以使用的链接文本:
:func:`my text <mymodule.MyClass.foo>`
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请结帐交叉引用Python对象.