我在使用 生成 UML 时遇到问题pyreverse,特别是当类不属于同一模块时以及使用绝对导入时,对于组合关系。
为了说明问题,我有以下两个模块a.py并且b.py位于同一个包中:
a.py:
from b import B
class A:
def __init__(self, b):
self.b: B = b
Run Code Online (Sandbox Code Playgroud)
b.py:
class B:
pass
Run Code Online (Sandbox Code Playgroud)
pyreverse当我在终端中从包运行命令时,我得到以下 UML。它没有显示两个类A和之间的组成关系B:
from .b import B但是,当我在 中进行相对导入时a.py,我得到了预期的结果:
似乎pyreverse在第一种情况下不认识到类B是相同的。为了解决这个问题,我尝试将包的绝对路径添加到环境变量中PYTHONPATH。然而,这并没有解决问题。
有谁知道当类在不同模块中定义时以及使用绝对导入时如何pyreverse在 UML 中生成正确的关系?
我正在使用 python 3.8.8 和 pylint 版本 2.12.2。