You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:30:39