我想我理解了python中的类继承,基本上你可以继承子类的父类的属性以便重用,并且还可以"添加"它以使更复杂的类.
这是我的问题:我有一个Car下面的类有(model, color, mpg)参数,之后我创建了一个名为ElectricCar从父Car类继承的新子类...现在当我调用ElectricCar"时(battery_type, model, color, mpg),我得到以下错误:
TypeError:init()只需要2个参数(给定5个参数)
我知道要解决它.我需要添加self.model,self.color并self.mpg在ElectricCar类.但为什么我必须这样做?如果我需要在子类上重新定义,这似乎会破坏继承的目的.
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)
我需要添加
self.model,self.color并self.mpg在ElectricCar类.
你没有.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)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |