小编Vic*_* Di的帖子

Python的超级(),究竟发生了什么?

我试图了解在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)
Run Code Online (Sandbox Code Playgroud)

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

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

2)super(),调用父类的构造函数,创建"Car"类的对象,然后我们通过"super().init(make,model,year)" 调用该对象的构造函数.因此,我们有两个对象:Car()类的一个对象和ElectiricCar类的一个对象,在我们的例子中它们是相同的.

哪一个是正确的?如果两者都没有,请解释一下究竟发生了什么:

 super().__init__(make, model, year)
Run Code Online (Sandbox Code Playgroud)

python

2
推荐指数
1
解决办法
1442
查看次数

标签 统计

python ×1