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
相关产品推荐
相关产品推荐

