簡體   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