【问题标题】:ImportError when importing backwards向后导入时的 ImportError
【发布时间】:2018-02-21 20:51:44
【问题描述】:

当我尝试向后导入时(示例即将到来),我收到 ImportError。

假设我有 3 个 python 文件:modA.py、modB.py 和 modC.py

dir/
    modA.py
    modB.py
    modC.py

modA.py:

import modB

instB = modB.clsB()

print("Successful")

modB.py:

import modC

list = [modC.clsC]

class clsB:
    def __init__(self):
        pass

modC.py

from modB import clsB

instB = clsB()

class clsC(clsB):
    def __init__(self):
        pass

我可以单独导入每个,但是当 modC 尝试导入 modB 时,由于某种原因它会出错。有什么办法可以解决这个错误,还是不能向后导入(或任何正确的术语)?

【问题讨论】:

  • 我会在他们都导入的另一个文件中定义 clsC。递归导入不是很好的做法
  • 您正在尝试使用循环导入。这是不好的。只需重新组织您的模块结构即可避免这种情况。

标签: python python-3.x import python-import importerror


【解决方案1】:

注意modB 如何导入modC。这会导致无限导入,这当然是一件坏事。您显然正在尝试使用类继承,但它的设置方式是类从自身继承。您可能想重新考虑所有内容的流程,并可能将脚本合并到一个文件中

【讨论】:

  • 谢谢。我认为进口导致了这样的某种问题,但找不到对正在发生的事情的正确解释。我已经进行了建议的修改并修复了它。
猜你喜欢
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 2017-05-13
  • 2020-12-25
  • 1970-01-01
相关资源
最近更新 更多