2009-10-05 151 views
8

我一直在努力做到以下几点:字符串处理文档字符串

#[...] 
    def __history_dependent_simulate(self, node, iterations=1, 
            *args, **kwargs): 
     """ 
     For history-dependent simulations only: 
     """ + self.simulate.__doc___ 

我想在这里完成是有作为的方法simulate的文档这种私有方法相同的文档,除非简短的介绍。这样可以避免复制粘贴,保留较短的文件,而不必每次都更新两个函数的文档。

但它不起作用。有谁知道一个原因,或者是否有解决方案?

回答

9

更好的解决方案可能是使用一个装饰,如:

def add_docs_for(other_func): 
    def dec(func): 
     func.__doc__ = other_func.__doc__ + "\n\n" + func.__doc__ 
     return func 
    return dec 

def foo(): 
    """documentation for foo""" 
    pass 

@add_docs_for(foo) 
def bar(): 
    """additional notes for bar""" 
    pass 

help(bar) # --> "documentation for foo // additional notes for bar" 

这样,你可以做文档字符串的任意操作。

+0

任意的操作意味着你可以在文档字符串中看到“为DOCUM> foo <”,并让装饰器使用re替换为foo .__ doc__,例如。 – 2009-10-06 01:56:31

1

我觉得this section使得它非常清楚:

什么是文档字符串?

文档字符串文字的字符串 发生如在 模块,函数,类,或方法 定义的第一个语句。这样的文档字符串变为 对象的特殊属性doc

所以,它不是评价为一个字符串表达式,它是一个字符串字面