Python代码调试求助:解决类继承中的TypeError参数不匹配问题
问题分析与解决
错误原因
- 参数数量不匹配:
hack类的__init__方法仅定义了year参数(加上默认的self共2个参数),但实例化时传入了'mahdi'和19两个实参,加上self就变成了3个参数,触发TypeError。 - 未传递父类所需参数:子类调用父类构造方法
super().__init__(name, number)时,name和number这两个变量在子类__init__中未定义,会引发后续的NameError。
修复方案
让子类hack的构造方法接收父类所需的name、number参数,同时保留自身的year参数,再将name和number传递给父类构造方法完成初始化。
修正后的代码
import os os.system('cls') class test : def __init__(self, name ,number): self.name=name self.number=number def add(self): return f' I am a {self.name} my love program' class hack (test): def __init__ (self, name, number, year): super().__init__(name, number) self.year=year p=hack('mahdi', 123, 19) # number需传入对应值,可根据实际需求调整 print(p.add())
如果需要调整参数顺序,保证父类参数传递正确即可,比如:
class hack (test): def __init__ (self, year, name, number): super().__init__(name, number) self.year=year p=hack(19, 'mahdi', 123) print(p.add())
补充说明
子类继承父类并重写__init__方法时,必须显式调用父类的__init__方法并传递所需参数,否则父类的属性无法完成初始化;实例化子类时,传入的参数数量和顺序必须与子类__init__方法的定义一致。
内容的提问来源于stack exchange,提问作者mahdi vatankhah
相关产品推荐
相关产品推荐

