【发布时间】:2010-06-04 07:22:58
【问题描述】:
我正在维护一个 Python 程序,并且正在努力理解各个类之间的关系。我认为查看类如何交互的图表会很有帮助。
有哪些可用选项可以让我这样做?
【问题讨论】:
-
在不同的 SO 帖子上有另一个解决方案:stackoverflow.com/questions/260165/…
标签: python uml class-design
我正在维护一个 Python 程序,并且正在努力理解各个类之间的关系。我认为查看类如何交互的图表会很有帮助。
有哪些可用选项可以让我这样做?
【问题讨论】:
标签: python uml class-design
只要我的 2 美分。
Case tools like Enterprise Architect 可以从 python 代码生成类图,但是为了便于理解,我更喜欢手动粗略地建模类和关系。
当我想了解新代码、大致了解类之间的协作以及了解继承层次时,我也会使用 UML。
大多数 IDE 都有探索代码的方法,但我发现小的有凝聚力的 UML 图更容易消化和记忆。
我还发现域模型在类图上更容易理解。
【讨论】:
如果您正在寻找具有该功能的 IDE,那么:
【讨论】:
gaphor有导入python模块和生成uml类图的功能,反正不太好。
无论如何,python 上的代码分析工具不能很好地工作,因为没有人可以“预测”哪些参数将被函数传递(或返回)等等。他们中的大多数“猜测”传递的类型。
希望带有“函数注释”的python 3能够解决这类“问题”
【讨论】:
好问题!根据您的动手能力,您可以考虑在运行代码时使用跟踪模块。
python -m trace -T yourprogram.py
会给你谁叫谁的信息。您可以对其进行解析,也可以编写一些代码以编程方式使用跟踪来提取调用图。
完成后,对dot 进行一些黑客攻击,您就会得到一个图表。完成此操作后,它会写一篇很酷的博客文章,介绍您所做的事情和结果。
【讨论】:
查看epydoc。它通常被认为是一个文档生成器,但请查看此示例中的(自动生成的)图表:
http://epydoc.sourceforge.net/api/epydoc.apidoc.RoutineDoc-class.html
【讨论】:
如果是Django你也可以这样做
./manage.py graph_models
如果你使用的是 Django 命令扩展
【讨论】: