2009-05-02 64 views
0

目前我正在努力寫我的第一個Python庫,我遇到了以下問題:從crossreferencing包Python導入

我有我的包myapp.factories以下導入:

from myapp.models import * 

在我的包myapp.models如下:

from myapp.factories import * 

我需要的車型在我的工廠的方案,但一個模型裏面我還需要的工廠之一。如果我現在請需要的工廠,我得到下面的錯誤代碼:

NameError: global name 'MyModelFactory' is not defined 

我敢肯定它有事情做與這些腳本的加載順序,但我似乎無法圖瞭解如何讓這些交叉引用起作用。

回答

5

「一個模式裏面我還需要的工廠之一」 - 只要導入工廠在你需要它:

class SomeModel: 
    def some_method(self): 
     from myapp.factories import SomeFactory 
     SomeFactory().do_something() 
+1

循環的依賴關係是坑,在任何語言和許多非語言環境;這個簡單的重構是去除這個圓形凹陷的一種方法,但我也建議對整體結構進行更廣泛和更深層次的重新考慮 - 圓形凹陷是一種「糟糕的建築氣味」,它們應該被視爲暗示考慮重新思考大局,恕我直言。 – 2009-05-03 19:46:45