文档字符串中的重复内容

时间:2010-04-04 21:26:22

标签: python docstring

在文档字符串中处理重复内容的好方法是什么?我有许多函数采用'标准'参数,必须在docstring中解释,但是只编写一次docstring的相关部分会很好,因为这将更容易维护和更新。我天真地尝试了以下内容:

arg_a = "a: a very common argument"

def test(a):
    '''
    Arguments:
    %s
    ''' % arg_a
    pass

但这不起作用,因为当我help(test)时,我看不到文档字符串。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:5)

正如其他答案所说,您需要更改功能对象的__doc__成员。执行此操作的一种好方法是使用将在docstring上执行格式设置的装饰器:

def fixdocstring(func):
    func.__doc__ = func.__doc__.replace('<arg_a>', 'a: a very common argument')
    #(This is just an example, other string formatting methods can be used as well.)
    return func

@fixdocstring
def test(a):
    '''
    Arguments:
    <arg_a>
    ''''
    pass

答案 1 :(得分:3)

__doc__可在大多数用户定义的类型上分配:

arg_a = "a: a very common argument"

def test(a):
    pass

test.__doc__ = '''
    Arguments:
    %s
    ''' % arg_a

答案 2 :(得分:2)

据我所知,没有明显的方法可以做到这一点(至少没有像Ignacio所暗示的那样明确地重新分配__doc__)。

但我认为这将是一件可怕的事情。考虑一下:

如果我浏览您的代码并在文件的第300行读取此文档字符串,该怎么办? 你真的希望我去参加搜索吗?