解决python中的循环导入错误[重复]


问题内容

这个问题已经在这里有了答案

8年前关闭。

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

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

from a import A
class B:
  def __init__(self):
    self.a = A()

from b import B
class A:
  def __init__(self, ref):
    assert isinstance(ref, B)
    self.ref = ref

这行不通。主文件导入B并使用它…不。导入出现问题。

来自文件的 错误ImportError:无法导入名称B


问题答案:

除了“不要那样做,您正在将自己绘画到一个角落”之外,您还可以推迟B的导入,直到需要它为止。档案a.py

class A:
    def __init__(self, ref):
        from b import B
        assert isinstance(ref, B)
        self.ref = ref

B在实例化类之前A,类不会被导入,届时模块已经被模块完全导入了b

您还可以使用一个通用的基类并对此进行测试。