Я изучаю организацию приложений Python в разных структурах, и тот, который кажется мне наиболее естественным, не работает из-за того, что выглядит как циклическая зависимость. Цель организации - переместить классы в свои собственные файлы и позволить модулям управлять своими собственными __init__.py
.Организация кода Python в модулях?
В любом случае, к коду. У меня есть приложение с этой структурой
/app
|__ user
| |__ __init__.py
| |__ user_dao
| |__ user_dto
| |__ user_record
|
|_app.py
после того, что /app/user/__init__.py
выглядит примерно так.
from user_dao import UserDAO
from user_dto import UserDTO
from user_record import UserRecord
и все пользовательские объекты зависят друг от друга в объекте liniar графе UserDTO -> UserDAO -> UserRecord
, где ->
эквивалентно «зависит».
И, наконец, в app.py
есть нечто похожее на
from user import UserDAO
from user import UserDTO
Когда приложение пытается запустить я получаю ошибку
ImportError UserDAO
с трассировки стека, который указывает на круговую зависимость. Есть ли лучший способ организовать аналогичный код в Python, кроме того, чтобы все классы были в одном файле, чтобы модули работали.
Любые предложения по дизайну приложений в python полезны, и спасибо.
не должно быть 'from user.userdao import UserDao'? – arynhard
Я пробовал этот код, и это нормально для меня, без ImportError. Я использую python 2.6.6 – Alexis
Также тестировался на windows с python 2.7.3 без ошибок. – Alexis