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

Python继承中__init__调用顺序解析及代码执行顺序疑问

Python继承场景下__init__方法的调用顺序解析

先看你给出的代码(修正了类名拼写错误GranParent→GrandParent):

class GrandParent():
    def __init__(self):
        # line 1
class Parent(GrandParent):
    def __init__(self):
        # line 2
        super().__init__()
class Child(Parent):
    def __init__(self):
        super().__init__()
        # line 3
ob = Child()

执行顺序拆解

当创建Child实例ob时,调用链的执行逻辑如下:

  1. 触发Child.__init__,首先执行super().__init__(),跳转到父类Parent的__init__方法。
  2. 进入Parent.__init__,先执行line 2的代码,再调用super().__init__(),跳转到父类GrandParent的__init__方法。
  3. 进入GrandParent.__init__,执行line 1的代码,执行完毕后返回Parent.__init__。
  4. Parent.__init__执行完毕,返回Child.__init__,最后执行line 3的代码。

所以实际执行顺序是:line 2 → line 1 → line 3,对应选项c)。

误解原因说明

你误以为继承链是从最顶层父类开始执行,但实际上super()是在当前方法执行到该语句时,才会去调用父类的构造方法。Parent的构造方法是先执行自身的代码(line2),再去调用父类的构造,而非先执行父类的逻辑。

内容的提问来源于stack exchange,提问作者momo123321

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:30:55