我需要修改一堆文件中的文档字符串,以将输入参数的默认值添加到它们中(如果存在于类构造函数或函数签名中)。
所以说,我给出了以下内容:
# a bunch of code
class A:
"""A good class.
Parameters
----------
p : int
A powerful parameter.
q : float, optional
An even more powerful parameter.
"""
def __init__(self, p=3, q=.3):
self.p = p
self.q = q
# a bunch of more code
我需要遍历整个文件,找到所有此类实例,并将它们更改为:
# a bunch of code
class A:
"""A good class.
Parameters
----------
p : int, optional (default=3)
A powerful parameter.
q : float, optional (default=.3)
An even more powerful parameter.
"""
def __init__(self, p=3, q=.3):
self.p = p
self.q = q
# a bunch of more code
然后将其保存回相同或不同的文件。
我正在尝试确保在文档字符串中提到默认值,这对于人类来说很容易做到,但是我希望不必手动检查整个程序包。
答案 0 :(得分:0)
这正是您想要做的:
1-访问每种方法的文档字符串并对其进行修改以包括默认值
这需要: 1.1-列出属性 1.2-在每个属性上做些事情
modify = [a for a in dir(A) if not (a.startswith('__') and a.endswith('__'))]
(当然,有一种检查属性是否为私有的方法,这只是一种快速方法)
然后在属性列表中修改所需的默认值,请使用inspect:
import inspect
inspect.getfullargspec(<YOURATTRIBUTE HERE>)
FullArgSpec(args=['self', 'p', 'q'], varargs=None, varkw=None, defaults=(3, .3), kwonlyargs=[], kwonlydefaults=None, annotations={})
您现在所要做的就是使用该信息来修改文档字符串