Python中嵌套类与外部类的双向继承是否可行?
Python嵌套类的继承可行性确认
1. 嵌套类继承外部父类:可行
当嵌套类定义在外部类内部时,外部类已完成类对象的创建,因此嵌套类可以直接继承外部父类。以下代码可正常执行:
class Parent: class Child(Parent): pass child = Parent.Child()
2. 外部父类继承内部嵌套类:不可行
外部类无法继承其内部尚未定义的嵌套类。在定义外部类Parent的父类时,内部的Child类还未被创建(Child是Parent类体的成员,需等待Parent类定义完成后才会成为类属性),因此会触发NameError。示例代码如下:
class Parent(Child): class Child: pass parent = Parent()
即使导入from __future__ import annotations也无法解决该问题——注解仅延迟类型解析,但类继承的父类必须在类定义阶段存在可引用的对象,而嵌套的Child此时尚未存在。常见的解决方式是将Child定义在外部作用域,再让Parent继承。
内容的提问来源于stack exchange,提问作者hopeless-programmer
相关产品推荐
相关产品推荐

