同じクラスの別のメソッドのdocstring内からクラスのメソッドへのリンクを追加したい。リンクはsphinxで、優先的にはSpyderや他のPython IDE'sでも機能するようにしたいです。
いくつかのオプションを試してみて、動作するオプションを1つだけ見つけましたが、面倒です。
_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: `mymodule.MyClass.foo`ですが、リンクはmymodule.MyClass.foo()
として表示され、foo()
として表示されるリンクが必要ですfoo
。
上記のオプションのいずれも、Spyderでリンクを作成しません。
ご協力いただきありがとうございます。
Sphinxで機能する解決策は、参照の前に_~
_を付けることです。
相互参照構文 の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にリンクとして表示されない場合があることに注意してください。
使用できるリンクのテキストを手動で指定する場合:
:func:`my text <mymodule.MyClass.foo>`
詳細については、checkout Cross-referencing Python objects 。