我正在探索将Python应用程序组织到不同的结构中,对我来说最自然的那个应用程序不起作用,因为看起来像循环依赖。该组织的目标是将类移动到他们自己的文件中,让模块由他们自己的__init__.py
控制。
无论如何对代码。我有一个具有这种结构的应用程序
/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应用程序设计的任何建议都很有帮助,谢谢。
答案 0 :(得分:0)
我认为错误取决于user_*.py
文件的编写方式:如果他们也说from user import UserDAO
,那么它们将循环依赖__init__.py
中已完成执行的代码。为避免这种情况,他们应该明确地说from user.user_dao import UserDAO
。