2012-07-28 52 views
5

我記錄代碼獅身人面像類似於這樣的:使用/運行有獅身人面像頂替文檔字符串文本

class ParentClass(object): 

    def __init__(self): 
     pass 

    def generic_fun(self): 
     """Call this function using /run/ParentClass/generic_fun()""" 
     do_stuff() 

class ChildClass(ParentClass): 

    def specific_fun(self): 
     """Call this function using /run/ChildClass/specific_fun()""" 
     do_other_stuff() 

我加入了:inherited-membersChildClass文檔,所以我必須聲明中有沒有像「調用此函數/父類/ generic_fun()」。

有沒有一種方法可以將文檔中的東西放入文檔中,例如獅身人面像將替換爲文檔記錄的實際類?

我想有代碼看起來象 類父類(對象):

def __init__(self): 
     pass 

    def generic_fun(self): 
     """Call this function using /run/<class_name>/generic_fun()""" 
     do_stuff() 

所以在ChildClass部分,獅身人面像的文件會讀...使用/運行/ ChildClass/generic_fun() ...和ParentClass節會讀取...使用/運行/ ParentClass/generic_fun()...?

理想情況下,我希望在同一頁面上有文檔,因此替換字符串對於不同部分會有所不同。

回答

7

我想出了一種方法來做這件事,而看別的東西。

有些函數autodoc在打印消息之前會調用。我將此代碼添加到我的conf.py文件中:

def get_class_name(full_module_name): 
    """ 
    Pull out the class name from the full_module_name 
    """ 
    #split the full_module_name by "."'s 
    return full_module_name.split('.')[-1] 

def process_docstring(app, what, name, obj, options, lines): 
    classname = get_class_name(name) 

    # loop through each line in the docstring and replace |class| with 
    # the classname 
    for i in xrange(len(lines)): 
     lines[i] = lines[i].replace('|class|', classname) 

def setup(app): 
    app.connect('autodoc-process-docstring', process_docstring) 

我想使用|令牌,但它們保留用於全局替換。我通過把下面一行放在我的第一個文件中(所以代碼替換| class | for | class |):

.. |class| replace:: `|class|` 
+0

get_class_name定義在哪裏? – mzjn 2012-07-31 18:59:45

+0

將其添加到。相同的文件中,它剛剛從這段代碼中分離出來。 – 2012-08-01 03:38:20