super(MyObject, self).__init__() 在类 MyObject __init__() 函数中做什么?

lin*_*bin 2 python inheritance super

class MyObject1(object):
    def __init__(self):
        super(MyObject1, self).__init__()
        pass

class MyObject2(object):
    def __init__(self, arg):
        super(MyObject2, self).__init__()
        pass
Run Code Online (Sandbox Code Playgroud)

我读过这样的python27代码,

我知道“超级”是指父类构造函数,

但我不明白为什么这两个类称自己为'构造函数' __init__',

好像没什么实际效果。

Nic*_*ull 5

这些是 Python 中一些非常基本的 OO 方法。在这里阅读。

super并且self是相似的:

super() 可让您避免显式引用基类,这很好。但主要优点是多重继承,各种有趣的事情都可能发生。如果您还没有,请参阅 super 上的标准文档。

(来自这个答案

下面是一个super在行动的例子:

class Animal(object):
     def __init__(self, speed, is_mammal):
          self.speed = speed
          self.is_mammal = is_mammal

class Cat(Animal):
     def __init__(self, is_hungry):
          super().__init__(10, True)
          self.is_hungry = is_hungry

barry = Cat(True)
print(f"speed: {barry.speed}")
print(f"is a mammal: {barry.is_mammal}")
print(f"feed the cat?: {barry.is_hungry}")
Run Code Online (Sandbox Code Playgroud)

可以看到,它super正在调用基类(当前类继承的类),后跟一个访问修饰符,访问基类的.__init__()方法。就像self,但是对于基类。