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

Python子类继承父类__init__参数遇报错,求解决方法

解决Python子类继承父类__init__参数的问题

你的代码有两个核心问题导致报错:

  • 子类b的__init__方法只定义了age一个参数,但实例化时传入了'joe'和40两个参数,引发参数数量不匹配的错误
  • 调用super().__init__()时没有传递父类a的__init__方法必需的name参数

下面是两种可行的修正方案:

方案一:显式传递父类所需参数

直接在子类的__init__中声明父类需要的参数,再通过super()传递给父类构造方法:

class a:
    def __init__(self, name):
        self.name = name
        
class b(a):
    def __init__(self, name, age):
        super().__init__(name)  # 将name参数传给父类的构造方法
        self.age = age

# 正确实例化
obj = b('joe', 40)
print(obj.name)  # 输出: joe
print(obj.age)   # 输出: 40

方案二:使用可变参数提高灵活性

如果父类参数较多或后续可能变动,可以用*args和**kwargs来传递参数,避免逐个声明:

class a:
    def __init__(self, name):
        self.name = name
        
class b(a):
    def __init__(self, age, *args, **kwargs):
        super().__init__(*args, **kwargs)  # 自动传递父类所需的参数
        self.age = age

# 实例化时注意参数顺序(age在前,父类参数在后)
obj = b(40, 'joe')
print(obj.name)  # 输出: joe
print(obj.age)   # 输出: 40

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:40:27