您如何从不同文件的子类内部访问超类?

How can you a access a superclass from inside a subclass in different a file?

我正在尝试在名为 main.py 的脚本中创建子 class 的实例。 subclass 及其关联的 superclass 每个都位于子目录中的单独文件中。文件结构如下:

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

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

NameError: 名称 'protocol' 未定义

据推测,这是因为我在 MovingBar 的 class def 中引用了协议,如下所示:

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

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

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