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

Python继承中__init__方法的工作原理及子类调用疑问

Python子类与父类__init__方法的工作原理

单个类里确实没法定义两个__init__方法,因为Python不支持函数重载——后定义的方法会直接覆盖前面的。但你提到的“两个__init__同时生效”其实是个误解,实际是子类主动调用了父类的初始化逻辑,把两步初始化流程合并成了子类实例化的完整过程。

结合你提供的代码拆解细节:

  • Employee类的__init__负责初始化name、age、pay这三个所有员工通用的属性,是基础的初始化逻辑。
  • Developer作为Employee的子类,需要额外维护level属性,所以单独定义了自己的__init__方法,参数也多了level。
  • 代码里的Employee.__init__(self,name,age,pay)是直接调用父类的初始化方法,把当前正在创建的Developer实例(也就是self)传入父类方法,让父类帮它完成通用属性的初始化,之后子类再自行初始化专属的level属性。

简单来说:实例化Developer的时候,先让父类Employee把“员工身份”的通用属性配置好,再由子类自己加上“开发者等级”这个专属属性,最终得到一个属性完整的开发者实例。

另外补充:用super().__init__(name,age,pay)也能实现同样效果,而且更适配多继承场景,但本质逻辑一致——都是子类主动触发父类的初始化流程,并非两个__init__自动同时运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:10:30