问题描述:使用pyreverse过程中报错:
Traceback (most recent call last):
File "/opt/OpsManage/venv3/bin/pyreverse", line 8, in <module>
sys.exit(run_pyreverse())
File "/opt/OpsManage/venv3/lib/python3.6/site-packages/pylint/__init__.py", line 37, in run_pyreverse
PyreverseRun(sys.argv[1:])
File "/opt/OpsManage/venv3/lib/python3.6/site-packages/pylint/pyreverse/main.py", line 184, in __init__
sys.exit(self.run(args))
File "/opt/OpsManage/venv3/lib/python3.6/site-packages/pylint/pyreverse/main.py", line 209, in run
writer.DotWriter(self.config).write(diadefs)
File "/opt/OpsManage/venv3/lib/python3.6/site-packages/pylint/pyreverse/writer.py", line 38, in write
self.write_classes(diagram)
File "/opt/OpsManage/venv3/lib/python3.6/site-packages/pylint/pyreverse/writer.py", line 59, in write_classes
self.printer.emit_node(i, **self.get_values(obj))
File "/opt/OpsManage/venv3/lib/python3.6/site-packages/pylint/pyreverse/writer.py", line 136, in get_values
args = [arg.name for arg in func.args.args if arg.name != "self"]
TypeError: 'NoneType' object is not iterable
修改源码 python3.6/site-packages/pylint/pyreverse/writer.py
添加if判断:
for func in obj.methods:
if func.args.args is not None:
args = [arg.name for arg in func.args.args if arg.name != "self"]
label = r"%s%s(%s)\l" % (label, func.name, ", ".join(args))
label = "{%s}" % label