Какие есть варианты для визуализации отношений классов в программе Python - PullRequest
8 голосов
/ 04 июня 2010

Я поддерживаю программу на Python и пытаюсь понять взаимосвязь между различными классами. Я думаю, что было бы полезно увидеть схему взаимодействия классов.

Какие есть варианты, которые могут позволить мне это сделать?

Ответы [ 6 ]

2 голосов
/ 04 июня 2010

Только мои 2 цента.

Инструменты Case подобно Enterprise Architect могут генерировать диаграммы классов из кода Python, однако для понимания я предпочитаю грубое моделирование классов и отношений вручную.

Я тоже использую UML, когда хочу понять новый код, получить грубый обзор взаимодействий между классами и получить представление о наследованиях наследования.

Большинство IDE имеют средства для изучения кода, но я считаю, что небольшие сплоченные UML-диаграммы легче переваривать и запоминать.

Мне также легче понять модели предметной области, когда они находятся на диаграмме классов.

1 голос
/ 04 июня 2010

Выезд Эпидок . Обычно он считается генератором документации, но посмотрите на график (автоматически сгенерированный) в этом примере:

http://epydoc.sourceforge.net/api/epydoc.apidoc.RoutineDoc-class.html

1 голос
/ 04 июня 2010

Отличный вопрос! В зависимости от того, насколько вы практичны, вы можете использовать модуль трассировки для запуска вашего кода.

python -m trace -T yourprogram.py

Даст вам информацию кто звонил, кто. Вы можете или проанализировать это, или написать некоторый код, который использует трассировку программно для извлечения графа вызовов.

Как только это будет сделано, немного взлома dot , и вы получите диаграмму. Как только вы это сделаете, в вашем блоге будет отличная запись о том, что вы сделали и как все получилось.

1 голос
/ 04 июня 2010

gaphor имеет возможность импортировать модуль Python и генерировать диаграммы классов uml, в любом случае это не так хорошо.

В любом случае, инструменты анализа кода на python работают не очень хорошо, поскольку никто не может «предсказать», какие аргументы будут переданы (или возвращены) функциями и так далее. Большинство из них «угадывают» тип пройденного.

Надеясь, что python 3 с "аннотацией функции" может решить эту проблему "

1 голос
/ 04 июня 2010

Если вы ищете IDE с этой функцией, то:

  1. Komodo
  2. Пидев для затмения
0 голосов
/ 05 июня 2010

Если это Джанго, вы также можете сделать

./manage.py graph_models 

если вы используете Django Command Extenstions

...