Resolve circular import error in python
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Circular (or cyclic) imports in Python
我有导入和创建类A实例的类B。A类建筑需要参考B类建筑,因此包括B类建筑。
1 2 3 4 | from a import A class B: def __init__(self): self.a = A() |
1 2 3 4 5 | from b import B class A: def __init__(self, ref): assert isinstance(ref, B) self.ref = ref |
这不管用。主文件导入b并使用它…不是。进口货有问题。
文件A中的错误导入错误:无法导入名称B
除了"不要这样做,你在把自己画成一个角落",你也可以推迟B的进口,直到你需要它。文件
1 2 3 4 5 | class A: def __init__(self, ref): from b import B assert isinstance(ref, B) self.ref = ref |
类
您还可以使用一个公共的基类并对此进行测试。
只导入
1 2 3 4 5 | class A: def __init__(self, ref): from b import B assert isinstance(ref, B) self.ref = ref |
创建类的实例时,将执行
1 2 3 4 | import a class B: def __init__(self): self.a = a.A(self) |
1 2 3 4 5 | import b class A: def __init__(self, ref): assert isinstance(ref, b.B) self.ref = ref |