Python OOP运行报错:需2个位置参数但传入3个,按老师步骤编写仍出错
问题解决方案
错误原因
报错是因为你调用父类构造方法的语法不符合Python 3的规范:
super()在Python 3中不需要手动传入当前子类、实例对象两个参数,系统会自动完成绑定- 你原代码中
super().__init__(pup, self)的写法相当于给父类__init__传入了2个额外参数,再加上需要传递的name参数,总共传入了3个参数,但父类__init__仅支持self、name两个位置参数,因此触发参数数量不匹配的报错 - 另外你原代码没有把
name参数传递给父类,即便修复参数数量问题也会报错
修正后的完整代码
class Dog: def __init__(self,name): self.name = name class pup(Dog): def __init__(self, name): super().__init__(name) sammy = pup('sammy') print(sammy.name)
运行修正后的代码会正常输出sammy。
内容的提问来源于stack exchange,提问作者loli loli
相关产品推荐
相关产品推荐

