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