gpt4 book ai didi

Python 的 super() ,到底发生了什么?

转载 作者:行者123 更新时间:2023-11-28 21:09:32 25 4
gpt4 key购买 nike

<分区>

我试图理解当我们在 Python 中实例化子类时创建了哪些对象,例如:

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

class ElectricCar(Car):
def __init__(self, make, model, year):
super().__init__(make, model, year)

my_tesla = ElectricCar('tesla', 'model s', 2016)

当我们创建对象 my_tesla 时,我们通过调用此类的构造函数来实例化 ElectricCar 类,该构造函数又调用父类的构造函数。它是如何发生的?现在我有两个猜测:

1) super()只是对父类的引用,所以我们通过“super().init(make, model, year)”调用父类的构造函数来实例化我们的子类类(class)。因此,我们只有 ElectricCar() 类的一个对象

2) super(),调用parent的构造函数,创建“Car”类的对象,然后我们调用这个对象的构造函数,通过“super().init(品牌、型号、年份)”。结果我们有两个对象:一个是 Car() 类的对象,另一个是 ElectiricCar 类的对象,尽管在我们的例子中它们是相同的。

哪个是正确的?如果两者都不是,那么请解释一下到底发生了什么:

 super().__init__(make, model, year)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com