解决python中的循环导入错误

HWe*_*nde 5 python class python-import

可能重复:
Python中的循环(或循环)导入

我有B类导入并创建类A的实例.A类需要在其构造函数中引用B,因此包括B.

from a import A
class B:
  def __init__(self):
    self.a = A()
Run Code Online (Sandbox Code Playgroud)
from b import B
class A:
  def __init__(self, ref):
    assert isinstance(ref, B)
    self.ref = ref
Run Code Online (Sandbox Code Playgroud)

这不起作用.主文件导入B并使用它......不是.进口的东西是错误的.

文件 导入错误:导入错误:无法导入名称B.

Mar*_*ers 13

除了"不要那样做,你把自己画成一个角落",你也可以推迟B的导入,直到你需要它为止.档案a.py:

class A:
    def __init__(self, ref):
        from b import B
        assert isinstance(ref, B)
        self.ref = ref
Run Code Online (Sandbox Code Playgroud)

B,直到你实例类将不会被导入A,到那时已经模块已经完全模块进口b.

您还可以使用公共基类并对其进行测试.