Что опции там для визуализации отношений класса в программе Python

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

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

8
задан David Sykes 4 June 2010 в 07:22
поделиться

6 ответов

Просто мои 2 цента.

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

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

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

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

2
ответ дан 5 December 2019 в 22:16
поделиться

Если вы ищете IDE с такой возможностью, то:

  1. Komodo
  2. Pydev для eclipse
1
ответ дан 5 December 2019 в 22:16
поделиться

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

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

Надеемся, что Python 3 с «аннотацией функции» сможет решить такую ​​«проблему»

1
ответ дан 5 December 2019 в 22:16
поделиться

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

python -m trace -T yourprogram.py

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

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

1
ответ дан 5 December 2019 в 22:16
поделиться

Если это Django, вы также можете использовать

./manage.py graph_models 

, если используете расширения команд Django

0
ответ дан 5 December 2019 в 22:16
поделиться

Проверьте epydoc . Обычно его считают генератором документации, но посмотрите на (автоматически сгенерированный) график в этом примере:

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

1
ответ дан 5 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: