Python多级继承中如何仅初始化基类A而非中间类B?
实现实例化C类仅初始化基类A的方法
要让实例化C时只触发基类A的初始化,跳过中间类B的__init__,可以用以下两种简单方法:
方法一:直接调用基类A的构造函数
在C的__init__里,直接调用A.__init__(self),绕过B的构造逻辑:
class A: def __init__(self) -> None: print("s") class B(A): def __init__(self) -> None: print("s1") super().__init__() class C(B): def __init__(self) -> None: # 直接调用A的构造函数,跳过B A.__init__(self) C() # 输出:s
这种方式直接明确,适合单继承场景,直接指定要初始化的目标基类。
方法二:使用super指定跳过中间类B
利用super()的第二个参数,指定从B的父类开始查找方法,这样会跳过B的__init__,直接调用A的__init__:
class A: def __init__(self) -> None: print("s") class B(A): def __init__(self) -> None: print("s1") super().__init__() class C(B): def __init__(self) -> None: # super(B, self)会获取MRO中B之后的类(即A),调用其__init__ super(B, self).__init__() C() # 输出:s
这种方式更贴合Python的继承机制逻辑,在复杂多继承场景下也能精准控制方法调用链。
内容的提问来源于stack exchange,提问作者Surya_1897
相关产品推荐
相关产品推荐

