1

我正在探索将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应用程序设计的任何建议都很有帮助,谢谢。

+1

不应该是'from user.userdao import UserDao'? – arynhard

+0

我试过这段代码,对我来说没问题,没有ImportError。我使用python 2.6.6 – Alexis

+0

也用python 2.7.3在windows上测试,没有错误。 – Alexis

回答

0

我认为这个错误取决于user_*.py文件的写入方式:如果他们也说from user import UserDAO,那么他们通常会依赖__init__.py中已完成执行的代码。为了避免这种情况,他们应该明确地说from user.user_dao import UserDAO