2013-01-03 34 views
0

假設我有一些函數(比如B1,B2,B3等),它們調用了相同的函數A, 我想在B1,B2,B3的文檔中加入一些解釋函數A使用的參數的文本,這些已經在函數A的文檔字符串中進行了解釋。但是我不想將A的文檔字符串複製到B1,然後是B2,然後是B3,如果我更改了函數A的文檔字符串,那麼我必須更改B1, B2,B3 ......所以我想知道是否有某種方法可以將B1的部分文檔字符串與A的文檔字符串連接起來,這樣當A的文檔字符串更新時,B1的相應部分也會更新。通過這種方式,用戶可以直接引用函數B1的文檔字符串作爲幫助信息,而不用麻煩檢查A的文檔字符串(實際上A的參數都是kwargs)。一個簡單的例子可能是象下面這樣:如何使函數docstring根據python中的另一個函數自動更新?

def A(): 
    ''' 
    I am doctring for function A 
    ''' 
    pass 

def B1(): 
    ''' 
    I am doctring for function B1, 

    followed by the same docstring as function A, which is: 

    ** I would like someway I can put the docstring of A here** 
    ''' 
    pass 

感謝任何幫助或引用我一些其他的鏈接,我試着用搜索引擎,但沒有針對性的信息中找到。

+5

你可以做到這樣的事情有一個裝飾,但爲什麼不乾脆把記下的文檔字符串說:「這些參數的說明,請參見A的文檔「? – BrenBarn

+0

是的,我同意。我發現在大多數情況下,這是一個更清晰的方法。 – wiswit

回答

2

你可以寫一個裝飾這樣做:

def append_doc_of(fun): 
    def decorator(f): 
     f.__doc__ += fun.__doc__ 
     return f 

    return decorator 


def A(): 
    ''' 
    I am doctring for function A 
    ''' 
    pass 


@append_doc_of(A) 
def B1(): 
    ''' 
    I am doctring for function B1, 

    followed by the same docstring as function A, which is: 

    ''' 
    pass 
相關問題