为什么Python子类调用super()构造父类时出现参数数量错误?
Python类继承参数不匹配报错修复方案
错误原因
- 子类
IceCreamStand的__init__方法缩进错误
你编写的子类代码中,def __init__没有缩进在IceCreamStand类的作用域下,Python不会将其识别为子类的构造方法,子类会默认继承父类Restaurant的构造方法(仅接收restaurant_name、cuisine_type两个入参),实例化时多传了flavor参数就会触发参数数量不匹配错误。 super()调用父类构造时多余传入self参数
Python中使用super()调用父类实例方法时,会自动将当前实例作为第一个self参数传入,手动再传self会导致参数数量异常。- 测试代码缺少
Restaurant类导入
测试代码中直接实例化Restaurant但没有导入该类,后续运行也会触发名称未定义错误。
修正后代码
IceCreamStand.py
from Restaurant import Restaurant class IceCreamStand(Restaurant): # 修正:构造方法缩进纳入类作用域 def __init__(self, restaurant_name, cuisine_type, flavor): # 修正:super调用无需手动传self super().__init__(restaurant_name, cuisine_type) self.flavor = flavor
testInherit.py
from IceCreamStand import IceCreamStand as ic # 修正:补充导入Restaurant类 from Restaurant import Restaurant ic1 = ic('b','Indian','Strawberry') ic2 = ic('a','Italian','Butterscotch') rest1 = Restaurant('Rooh','All')
内容的提问来源于stack exchange,提问作者arvind jenamani
相关产品推荐
相关产品推荐

