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



