2009-05-02 101 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