python - 解决python中的循环导入错误

标签 python class python-import

<分区>

Possible Duplicate:
Circular (or cyclic) imports in 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 并使用它……不是。 进口有问题。

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

最佳答案

除了“不要那样做,你把自己逼到墙角”之外,你还可以推迟 B 的导入,直到你需要它。文件a.py:

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

Class B 在实例化 class A 之前不会被导入,此时模块已经被模块 b 完全导入.

您还可以使用通用基类并对其进行测试。

关于python - 解决python中的循环导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10027011/

相关文章:

c++ - 为什么我可以在成员函数中使用尚未声明的成员变量?

python - 如何使用 PyPlot 摆脱鼠标悬停坐标?

python - urllib2 urlopen 工作非常随机

python - 在使用 django 设置 WSGI 期间为所有静态文件获取 404

c# - C#中的动态类创建

python - 从包内的父目录导入模块

python - 迭代器在 Python 中节省内存吗?

c++ - C++ 中的 C2276 或 C3867 编译器错误

python - 从脚本导入与从模块导入有何不同?

python - python 中与本地和全局库的相对导入