2012-07-28 82 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