【问题标题】:How can you a access a superclass from inside a subclass in different a file?如何从不同文件的子类中访问超类?
【发布时间】:2021-07-12 04:28:08
【问题描述】:

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

  • main.py
  • 协议
    • protocol.py(里面是一个名为protocol的超类)
    • MovingBar.py(里面是一个名为 MovingBar 的子类)

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

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

NameError:名称“协议”未定义

大概是因为我在MovingBar的类def中引用了protocol如下:

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

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

【问题讨论】:

    标签: python import python-import subclass


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2013-01-04
      • 2012-04-09
      • 2013-03-24
      • 2017-09-13
      • 2018-10-14
      相关资源
      最近更新 更多