Что за прелесть эти ваши сказочки..
Питон чудо как хорош, когда дело касается скорости исполнения.
Простые программы из одного-двух классов исполняются, да и пишутся на нём быстро,
а иногда даже очень быстро.
Но вот как только тебе захочется сделать так, чтобы классы были разложены по файлам,
и начнёшь подтягивать зависимости из файла в файл при помощи import
, можно садиться
в угол, брать попкорн и расплываться в чеширской, практически сардонической улыбке.
Небольшая пауза, пока я вычищаю из поста все ругательства, которые накопились за
пять дней “знакомства” с языком.
Тем не менее, способ справиться с “кошмарным ужасом” зависимостей есть.
Первое что надо запомнить:
import foo.bar |
Если вы делаете так, готовьтесь к неприятностям. Т.е. циклические зависимости,
переходящие в невозможность подгрузить какой-нибудь класс.
Происходит это не только потому, что модуль верхнего уровня может где-нибудь
понадобиться, сколько потому, что импортируя где-нибудь модуль foo.pee
, вы
автоматически требуете, чтобы питон проимпортировал модуль foo
. Проще говоря,
импортируем зависимости без напряжения - в модулях более нижнего уровня
из модулей более верхнего:
import foo |
и, с осторожностью, чтобы не зациклить импорты, зависимости между модулями
под модулями foo.bar
и foo.baz
.
Второе. Если в файле есть две часто используемые сущности, но по смыслу они
отличаются и довольно заметно, лучше их разнести по разным файлам.
В этом случае вам не придётся долго думать почему, потянув себе класс конфигурации
приложения, вы потянули зависимости логгера (например).
В целом же, как я уже и отмечал, скрипты на питоне пишутся быстро, исполняются
невероятно быстро, но отвратительно отлаживаются, т.ч. желаю вам терпения,
ну и, возможно, просветления на этом пути.
В следующих сериях (если дойдут руки):
- Как и чем тестировать в python
- Как сделать пакет, чтобы поставить на другой машине через pip?