首页 > 解决方案 > 如何从不同文件的子类中访问超类?

问题描述

我正在尝试在名为 main.py 的脚本中创建子类的实例。子类及其关联的超类各自位于子目录中的单独文件中。文件结构如下:

在 main.py 中,我可以from protocols.protocol import protocol使用这种方法加载协议超类,我可以毫无问题地生成超类的实例。

但是,当我下次尝试使用加载 MovingBar 子类时from protocols.MovingBar import MovingBar,出现以下错误

NameError:名称“协议”未定义

想必这是因为我在 MovingBar 的类 def 中引用了协议如下:

class MovingBar(protocol):
    def __init__(self):
        super().__init__()

我不确定为什么 python 在 main.py 文件中识别对协议的引用,但在 MovingBar 文件中却没有。有没有办法导入协议,以便在我随后导入 MovingBar 时可以看到它?

标签: pythonimportpython-importsubclass

解决方案


你需要from protocol import protocol在你的MovingBar.py. 模块不继承其调用者的全局环境。


推荐阅读