Python3源代码的类图查看器应用程序

19

Pynsource是一个开源项目,提供免费的社区版: https://pynsource.com/ - Marc Compere
2个回答

30

是的,有一个工具可以做到:使用pylint,可以使用pyreverse生成类图(可能不像参考资料中那么漂亮,但很清晰和有用)。需要使用graphviz进行依赖关系分析。

从命令行输入:

要分析一个完整或部分包,请使用以下命令:

$ pyreverse -o png -p <project name>

分析一个特定文件:

$ pyreverse -o png -p myproject \path\to\myproject\myfile.py 

示例输出:类图

enter image description here

示例输出:包

enter image description here


可以提供一个特定的文件而不是<项目名称>吗? - vpas
我认为它是这样的; <project name> 是指包含项目的文件夹/包,但如果用特定的<filename.py>替换,这应该也可以工作。我在答案中链接了文档。 - Reblochon Masque
2
无论如何感谢您的回答...我已经找到了我需要的:pyreverse -o png -p myproject \path\to\myproject\myfile.py - vpas
1
太好了,谢谢。我已经将这个指令添加到答案中了。 - Reblochon Masque
对我来说,命令pyreverse -o png -p <项目名称> 没有任何作用。只有当我指定文件名时才有效。 - Nathan B

6

我发现被接受的答案违反了最小惊讶原则 :)

假设当前目录下含有Python文件以及子目录中的源代码,运行pyreverse -o png -p py_test .会导致Pylint捕捉到__init__.py文件,并生成一个关于r:\apps\python3\lib\encodings\的UML图表。

如果使用pyreverse -o png -p py_test ./main.py命令,则会生成一个空白的PNG文件,因为该源文件中没有定义类。

然而,使用pyreverse -o png -p py_subdir ./py_subdir命令可以得到一些合理的结果。它会为子目录中的全部代码生成类和包的图表。这似乎与直觉相悖。


在这个实例中,py_test代表什么? - Hofbr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接