python - 如何以编程方式更改文件中的文档字符串
问题描述
我需要修改一堆文件中的文档字符串,以向它们添加输入参数的默认值(如果存在于类构造函数或函数签名中)。
因此,可以说,我给出了以下内容:
# 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
然后将其保存回相同或不同的文件。
我试图确保在文档字符串中提到了默认值,这对人类来说很容易做到,但我希望我不必手动浏览整个包。
解决方案
这正是您想要做的:
1-访问每个方法的文档字符串并修改它以包含默认值
这需要: 1.1- 列出属性 1.2- 对每个属性做一些事情
modify = [a for a in dir(A) if not (a.startswith('__') and a.endswith('__'))]
(当然有一种方法可以检查属性是否为私有,这只是一种快速方法)
然后,要修改您想要的默认值的属性列表,请使用检查:
import inspect
inspect.getfullargspec(<YOURATTRIBUTE HERE>)
FullArgSpec(args=['self', 'p', 'q'], varargs=None, varkw=None, defaults=(3, .3), kwonlyargs=[], kwonlydefaults=None, annotations={})
您现在需要做的就是使用该信息来修改文档字符串
推荐阅读
- python - 如何使用正则表达式python搜索字符串中特殊字符的完全匹配
- mongodb - 如何在给定条件下聚合每个不同记录的总和并在 mongodb 的数组中获取结果
- docker - 主机添加 /usr/bin/host 以从头开始包含 Go 二进制文件的 Dockerfile?
- php - 使用增量页码值从多个页面获取数据
- drupal-modules - 如何在 Drupal 8 的同一节点的下拉列表中获取多个字段集合值?
- jenkins - 更新 Jenkins 版本后未正确设置环境变量
- python - 通过 urllib2 访问 goolg 的问题
- react-admin - 为 Edit 或 ShowButton 覆盖 basePAth
- php - 使用 phpMailer 未收到任何电子邮件
- c# - C# - 将图像复制粘贴到 Outlook 中,将其设置为两次附件文件