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

Python子类调用super().__init__报参数数量错误如何解决?

问题排查与解决方案

错误原因

  • 核心错误是调用super().__init__()时多传入了self参数:Python中使用super()调用父类的实例方法时,会自动将当前子类实例作为self参数隐式传递给父类方法,无需手动传入。你手动多传了self,导致父类__init__方法收到的参数数量超出定义的4个(self+3个业务参数),触发参数数量不匹配的类型错误。
  • 附加笔误:父类Car的__init__方法中self.make = make末尾多了一个多余的反引号,会额外触发语法报错。

解决方案

修改两处代码即可:

  1. 移除ElectricCar类__init__方法中super().__init__()调用里的self参数
  2. 删除Car类__init__方法中self.make = make末尾的多余反引号

修正后完整代码

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()

    def read_odometer(self):
        print("This car has" + str(self.odometer_reading) + "miles on it ")

# def update_odometer(self,mileage):
#        if (mileage>= self.odometer_reading):
#            self.odometer_reading = mileage
#        else:
#            print("You can't roll back an odometer ")

#def increment_odometer(self):
#     self.odometer_reading += miles

class ElectricCar(Car):
    def __init__(self, make, model, year):
        # 移除手动传入的self参数
        super().__init__(make, model, year)
        self.battery_size = 70

    def describe_battery(self):
        print("This car has a " + str(self.battery_size) + "kWh battery")


myTesla = ElectricCar('Tesla', 'model_s', 2016)

print(myTesla.get_descriptive_name())
myTesla.describe_battery()

运行结果

2016 Tesla Model_S
This car has a 70kWh battery

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:57:03