繁体   English   中英

如何解决此 Python 继承超子调用?

[英]How do I resolve this Python inheritance super-child call?

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

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

前任:

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()

您没有在此处提供电池尺寸:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM