2017-10-07 5 views
2

単純な例として、次の2つのサブモジュールのコード(a.pyb.pyは同じディレクトリにあります)。同じサブモジュール関数:func:`hook`へのリンクは動作しますが、リンクは異なるモジュールにクロスリファレンスしません。すなわち、:func:`foo`です。私も:func:`.a.foo`の構文を試しました - まだ動作しません。 a.foo()への参照はどのようにすればいいですか?異なるサブモジュールの関数/クラスへのクロスレフェンスリンク

# script a.py 
def foo(): 
    '''foo func''' 

# script b.py 
def hook(): 
    '''hook func''' 

def spam(): 
    '''spam func. 
    :func:`foo` 
    :func:`hook` 
''' 
+0

あなたは近くにいると思います。 Pythonの点線のパスを試してみてください。おそらく ':func:\' a.foo \ ''または ':func:\' parent.a.foo \ ''? –

答えて

1

docsに記載されているように:

通常、これらのロール内の名前は、現在のモジュールとクラス次いで と、次いで付加現在のモジュール名で、さらなる 資格なしで最初に検索されています名前(もしあれば)が前に付いています。 の名前の前にドットを付けると、この順序は逆になります。その場合

:func:`.a.foo`モジュールbの内部a名前付きオブジェクトを意味します。それはb.a.foo機能を探します。

あなたはb..a.fooを指すようになりますこれ、:func:`..a.foo`を試してみてください、または単にa.foo(ローカル今、申し訳ありませんことを確認することはできません。しかし、私は私が前にその構文を使用していた覚えています)。

ただし、a.py & b.pyは、モジュール名である必要があります。それらがスクリプトにすぎず、パッケージに含まれていない場合(プロジェクトのルートまでは__init__.pyファイルではありません)、これらのロールと相互参照する方法はありません。

:any:ロール(:any:`foo`)を使用して、オブジェクトが一般的な説明のオブジェクトのインデックスに含まれることを期待してください。

関連する問題