python - 如何从不同文件的子类中访问超类?
问题描述
我正在尝试在名为 main.py 的脚本中创建子类的实例。子类及其关联的超类各自位于子目录中的单独文件中。文件结构如下:
- 主文件
- 协议
- protocol.py(里面是一个名为protocol的超类)
- MovingBar.py(里面是一个名为 MovingBar 的子类)
在 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 时可以看到它?
解决方案
你需要from protocol import protocol
在你的MovingBar.py
. 模块不继承其调用者的全局环境。
推荐阅读
- antlr - ANTLR4 在输入端没有可行的替代方案
- java - 给定 n 个文件及其长度,将总字节数平均分配给 d 个线程,使得任何两个线程最多相差 1 个字节
- c++builder - std::variant 在赋值操作中给出 std@bad_alloc
- angular - 如何在角度货币管道中隐藏货币符号
- javascript - 对 Ember 计算属性相关键使用常量
- c# - 设置前景以编程方式查看
- python - Matplotlib xticks 与默认的重叠
- php - PHP 连接到 Cloud SQL 实例超时
- z3 - Z3 (z3py) "simplify()" 函数的 "elim_and" 选项总是为位向量启用
- apache-spark-sql - 从数据中的列驱动目标表写入 Hive