Python类继承没有做我认为应该做的事情

noo*_*014 2 python python-2.7

我想我理解了python中的类继承,基本上你可以继承子类的父类的属性以便重用,并且还可以"添加"它以使更复杂的类.

这是我的问题:我有一个Car下面的类有(model, color, mpg)参数,之后我创建了一个名为ElectricCar从父Car类继承的新子类...现在当我调用ElectricCar"时(battery_type, model, color, mpg),我得到以下错误:

TypeError:init()只需要2个参数(给定5个参数)

我知道要解决它.我需要添加self.model,self.colorself.mpgElectricCar类.但为什么我必须这样做?如果我需要在子类上重新定义,这似乎会破坏继承的目的.

class Car(object):
    condition = "new"
    def __init__(self, model, color, mpg):
        self.model = model
        self.color = color
        self.mpg   = mpg

my_car = Car("DeLorean", "silver", 88)

class ElectricCar(Car):
    def __init__(self,battery_type):
        self.battery_type = battery_type

my_car = ElectricCar("molten salt", "Honda","black", "33")
Run Code Online (Sandbox Code Playgroud)

vau*_*tah 5

我需要添加self.model,self.colorself.mpgElectricCar类.

你没有.Python允许您调用已替换的父类的方法.您只需要显式调用父类的构造函数.

第一个参数ElectricCar.__init__是电池类型.将其余的位置参数存储在list(args)中并将它们解压缩到父构造函数:

class ElectricCar(Car):
    def __init__(self, battery_type, *args):
        super(ElectricCar, self).__init__(*args) # super().__init__(*args) in Py3k+
        self.battery_type = battery_type
Run Code Online (Sandbox Code Playgroud)