问题标签 [pyreverse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
606 浏览

python - Python pyreverse 可以为函数生成 UML 图吗?

pyreverse是一个从 Python 代码生成 UML 图的好工具。但是,我发现它无法识别函数中使用的所有类。我举以下例子来说明我的观点:

如果我们使用 pyreverse 生成类图,很明显我们可以ClassB看到ClassC. 但是,它不能生成与ClassA在其函数中使用的关系perform。pyreverse 有什么方法可以检索 和 之间的ClassC关系ClassA

0 投票
1 回答
105 浏览

python - Pyreverse 没有检测到父类是 Composite ......为什么?

假设我有以下目录结构:

__init__.py为空白。在test.py. 我有以下代码:

这里的想法是实现简单的一对多组合。也就是说,所有Employee子类型也包含一个Address实例。

然后我运行pyreverse -S -o uml.png .生成一个 UML 类图并得到以下信息:

在此处输入图像描述

pyreverse不承认Employee和之间存在复合组件关系Address。但是,如果我重构test.py为以下内容:

我知道这AddressManager.

在此处输入图像描述

这在技术上不是不正确的吗?据我了解,该关联应该与父类有关Employee。为什么pyreverse认为那Address只是一个组成部分Manager

0 投票
1 回答
45 浏览

python - 使用绝对导入时,pyreverse 未在 UML 中显示组合关系

我在使用 生成 UML 时遇到问题pyreverse,尤其是当类不是同一模块的一部分时以及使用绝对导入时的组合关系。

为了说明这个问题,我有以下两个模块a.py并且b.py在同一个包中:

a.py

b.py

当我从包的终端中运行pyreverse命令时,我得到以下 UML。它没有显示两个类A和之间的组合关系B

在此处输入图像描述

但是,当我在 中进行相对导入from .b import Ba.py,我得到了预期的结果:

在此处输入图像描述

在第一种情况下,似乎pyreverse没有认识到类B是相同的。为了解决这个问题,我尝试将包的绝对路径添加到环境变量PYTHONPATH中。然而,这并没有解决问题。

有谁知道pyreverse当在不同模块中定义类以及使用绝对导入时如何在 UML 中生成正确的关系?

我正在使用 python 3.8.8 和 pylint 版本 2.12.2。