我是新來的Python,和我有一個問題,但我不能完全肯定,如果這是我的問題。我有兩個文件,user.py和comments.py。在user.py,我做
from comments import Comment
和comments.py我做
from user import User
我的用戶負載很好,但是當我打開通向評論的URL,我得到了一個服務器錯誤。評論出from comments import Comment
解決了這個問題。難道我做錯了什麼?
我是新來的Python,和我有一個問題,但我不能完全肯定,如果這是我的問題。我有兩個文件,user.py和comments.py。在user.py,我做
from comments import Comment
和comments.py我做
from user import User
我的用戶負載很好,但是當我打開通向評論的URL,我得到了一個服務器錯誤。評論出from comments import Comment
解決了這個問題。難道我做錯了什麼?
是的,你有一個循環導入,並導致許多許多問題。如果您考慮導入時實際發生的情況,則類似於「將代碼從文件x複製到此文件中」,但如果您從x複製到y然後從y複製到x,則您已創建一個無限循環,在這種情況下,解釋器難以找出哪個模塊應該取代或加載哪個模塊。但是,如果您的程序架構正確,則不應該有任何問題。你有什麼理由讓這個通告進口?如果我們更仔細地看待問題,機會實際上並不需要它。
這種循環導入不起作用。導入模塊意味着基本上執行它中的語句。 import
語句會在遇到它們時執行,因此至少在其中一個模塊中,其他模塊尚未初始化,因此導入將失敗。
循環依賴被認爲是反模式。在某些情況下,它們會以某種方式自然發生,但總的來說,它們是不良設計的標誌。
您可以通過將其中一個導入語句移至模塊末尾或功能級別來完成此工作,但我建議您不要這些「修復」。
你能告訴我們'comments.py'文件的內容嗎? – Tadeck 2012-04-16 22:25:45