文档字符串中的重复内容

9 投票
4 回答
890 浏览
提问于 2025-04-15 21:14

如何处理文档字符串中的重复内容呢?我有很多函数都需要用到一些“标准”的参数,这些参数在文档字符串中需要解释清楚。不过,如果能把文档字符串中相关的部分只写一次,那就方便多了,这样维护和更新起来也简单。我之前试过这样做:

arg_a = "a: a very common argument"

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

但是这样不行,因为当我输入 help(test) 时,看不到文档字符串。有没有好的方法可以解决这个问题呢?

4 个回答

2

据我所知,似乎没有明显的方法可以做到这一点(至少不包括像Ignacio建议的那样明确地重新赋值__doc__)。

不过,我觉得这样做会非常糟糕。想想看:

如果我在你的代码中浏览,正在阅读你文件第300行的文档字符串,你真的希望我去搜索这个参数吗?

5

__doc__ 是大多数用户自定义类型可以赋值的:

arg_a = "a: a very common argument"

def test(a):
    pass

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

正如其他回答所说,你需要修改函数对象的 __doc__ 属性。一个很好的方法是使用装饰器,这样可以对文档字符串进行格式化处理:

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

撰写回答