美文网首页
super多继承执行过程

super多继承执行过程

作者: barriers | 来源:发表于2020-12-20 10:22 被阅读0次
class A:
    def __init__(self):
        self.n = 2
    def add(self, m):
        # 第四步
        # 来自 D.add 中的 super
        # self == d, self.n == d.n == 5
        print('self is {0} @A.add'.format(self))
        self.n += m
        # d.n == 7
class B(A):
    def __init__(self):
        self.n = 3
    def add(self, m):
        # 第二步
        # 来自 D.add 中的 super
        # self == d, self.n == d.n == 5
        print('self is {0} @B.add'.format(self))
        # 等价于 suepr(B, self).add(m)
        # self 的 MRO 是 [D, B, C, A, object]
        # 从 B 之后的 [C, A, object] 中查找 add 方法
        super().add(m)
        # 第六步
        # d.n = 11
        self.n += 3
        # d.n = 14
class C(A):
    def __init__(self):
        self.n = 4
    def add(self, m):
        # 第三步
        # 来自 B.add 中的 super
        # self == d, self.n == d.n == 5
        print('self is {0} @C.add'.format(self))
        # 等价于 suepr(C, self).add(m)
        # self 的 MRO 是 [D, B, C, A, object]
        # 从 C 之后的 [A, object] 中查找 add 方法
        super().add(m)
        # 第五步
        # d.n = 7
        self.n += 4
        # d.n = 11
class D(B, C):
    def __init__(self):
        self.n = 5
    def add(self, m):
        # 第一步
        print('self is {0} @D.add'.format(self))
        # 等价于 super(D, self).add(m)
        # self 的 MRO 是 [D, B, C, A, object]
        # 从 D 之后的 [B, C, A, object] 中查找 add 方法
        super().add(m)
        # 第七步
        # d.n = 14
        self.n += 5
        # self.n = 19

d = D()
d.add(2)
print(d.n)

相关文章

  • super多继承执行过程

  • super方法做了什么?

    super方法,可以执行父类中的方法在子类继承多类的情况下,遵循mro算法,顺序关系见执行结果

  • 面向对象-super()

    单继承/多继承中的super工作方式方法解析顺序MRO

  • 多继承以及MRO顺序

    1、单独调用父类的方法 2、多继承中super调用所有父类的被重写方法 3、单继承中super() 总结 supe...

  • 类访问权限

    java中仅有单继承,没有多继承。 java中使用super来调用父类中的指定操作: super可以用于访问父类中...

  • 5-1、类的继承

    类的继承super,执行父类的构造函数,使得我们能够调用父类的属性

  • python类继承(super多类继承)

    1. python2和python3中定义类的形式不同 python3中只有只有新式类 python2中有经典类和...

  • Python - super()

    参考:Python : super没那么简单 一.单继承 1.Python2 2.Python3 二.多继承

  • python中super的使用

    super的简单用法 多继承中super的使用   super简单的说是调用父类的方法,不管是父类的初始化方法还是...

  • 8、TypeScript面向对象特性

    一、类 等同于: 执行结果: 二、类的继承 两个关键字:1、extends:用来声明类的继承关系2、super:用...

网友评论

      本文标题:super多继承执行过程

      本文链接:https://www.haomeiwen.com/subject/gjohnktx.html