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

Python继承中调用父类__init__报错,super却正常,原因是什么?

TypeError: Parent.init() missing 1 required positional argument: 'name' 原因解析

当直接通过父类名Parent调用__init__方法时,这个方法是未绑定到具体实例的普通函数,不会自动把当前子类的实例(也就是self)传递进去。

父类Parent的__init__方法定义要求两个参数:第一个是self(代表实例本身),第二个是name。你的代码里写了Parent.__init__(name),相当于把name当成第一个参数传给了self,而真正需要的name参数完全没传,所以Python报错提示缺少必填的name参数。

如果要直接用父类名调用__init__,必须手动传入当前子类的实例self,修改后代码即可正常运行:

class Child(Parent):
    def __init__(self, name):
        Parent.__init__(self, name)

而super().__init__(name)能正常运行的原因是,super()会返回一个代理对象,它在调用父类方法时会自动把当前子类的实例(self)传递给父类的__init__,你只需要传入除self之外的其他参数(这里就是name)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:31:14