Python—子类构造函数调用super().__init__()

版权声明:转载请注明出处。 https://blog.csdn.net/paopaohll/article/details/83063349

【super作用】

  1. 如果子类(Puple)继承父类(Person)不做初始化,那么会自动继承父类(Person)属性name。
  2. 如果子类(Puple_Init)继承父类(Person)做了初始化,且不调用super初始化父类构造函数,那么子类(Puple_Init)不会自动继承父类的属性(name)。
  3. 如果子类(Puple_super)继承父类(Person)做了初始化,且调用了super初始化了父类的构造函数,那么子类(Puple_Super)也会继承父类的(name)属性。

在这里插入图片描述

【继承中super的调用顺序】

继承中super的调用顺序是与MRO-C3的类方法查找顺序一样的

class A:
    def __init__(self):
        print('A')
        
class B(A):
    def __init__(self):
        print('B')
        super().__init__()

class C(A):
    def __init__(self):
        print('C')
        super().__init__()

class D(A):
    def __init__(self):
        print('D')
        super().__init__()
        
class E(B, C):
    def __init__(self):
        print('E')
        super().__init__()


class F(C, D):
    def __init__(self):
        print('F')
        super().__init__()

class G(E, F):
    def __init__(self):
        print('G')
        super().__init__()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/paopaohll/article/details/83063349