如何解析这个Python继承超子级调用?

2024-06-16 10:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我使用一个超级构造函数来创建一个继承自父类的类,是否可以使用同一个调用来设置一个属性来创建子类? 所以在我的工作中,我正在创造一辆电动汽车。电动汽车是汽车中的儿童级。 电动汽车有一个属性battery,它将通过其类构造函数初始化。我可以在我第一次打电话来建造电动汽车时指定电池的大小吗

目前它给我一个错误,因为我有一个超级调用,它的参数比我的电动汽车构造函数少

例如:

class Car():
    def __init__(self,model,year):
        self.model = model
        self.year = year
    def getInfo(self):
        print(self.model, self.year)

class ElectricCar(Car):
    def __init__(self, model, year, battery_size):
        super().__init__(model, year)
        self.battery = Battery(battery_size)

class Battery():
    def __init__(self, battery_size=70):
        self.battery_size = battery_size

    def describe_battery(self):
        print("Battery size is", self.battery_size)

my_tesla = ElectricCar('TeslaX', 2016)
my_tesla.getInfo()
  print(my_tesla.battery)
my_tesla.battery.describe_battery()

my_big_tesla = ElectricCar('TeslaY', 2016, 90)
my_big_tesla.battery.describe_battery()

Tags: selfsizemodelinitmydefyearclass
1条回答
网友
1楼 · 发布于 2024-06-16 10:30:11

这里没有给出电池大小:

my_tesla = ElectricCar('TeslaX', 2016)

更改为:

my_tesla = ElectricCar('TeslaX', 2016, 1337)  # 1337 is battery size.

如果希望提供默认值,还应在ElectricCar中提供,如下所示:

def __init__(self, model, year, battery_size=70):
    super().__init__(model, year)
    self.battery = Battery(battery_size)

相关问题 更多 >