2017-10-07 108 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`名爲a模塊b的內部的物體。它會尋找b.a.foo函數。

你應該嘗試:func:`..a.foo`,這將指向b..a.foo,或者只是a.foo(不能檢查本地現在,對不起,但我記得我是用這種語法之前)。

但是請注意,a.py & b.py應該是模塊,即可以在它們的名下導入。如果它們只是腳本,並且不在包中(不存在於文件根目錄下的文件),則無法與這些角色進行交叉引用。

您可以嘗試使用:any:角色 - :any:`foo` - 並希望它能在所描述的對象的一般索引中找到該對象。