super()理解之砖石继承

一、钻石继承:

什么是钻石继承呢?举个例子,其中A是顶级父类,B1和B2是次父类 ,C是继承了B1和B2。掌握了这些对于后面刷题,可以更好的理解super.()函数方法。

class A:
    def __init__(self):
        print("我是A")
class B1(A):
    def __init__(self):
        A.__init__(self)
        print("我是B1")
class B2(A):
    def __init__(self):
        A.__init__(self)
        print("我是B2")
class C(B1,B2):
    def __init__(self):
        B1.__init__(self)
        B2.__init__(self)
        print("我是C")
c=C()

其中A是顶级父类,B1和B2是次父类 ,C是继承了B1和B2。

其输出的结果:

我是A
我是B1
我是A
我是B2
我是C

二、super()向上搜索指定的父类方法。

上一个的输出结果里面有一个A是重复使用了,为了解决这个问题,就可以使用super()函数,自动向上搜索父类的方法,这样就可以在实例化C的时候,向上搜索父类的话就会避免掉将重复的父类.__init__()方法执行出来。super()函数的用途之一就是向上搜索指定的某个父类方法。然后就可以扩展到任意的方法了。

class A:
    def __init__(self):
        print("我是A")
class B1(A):
    def __init__(self):
        super().__init__()#向上搜索父类
        print("我是B1")
class B2(A):
    def __init__(self):
        super().__init__()
        print("我是B2")
class C(B1,B2):
    def __init__(self):
        super().__init__()
        print("我是C")
c=C()

运行结果为:

我是A
我是B2
我是B1
我是C

 三、super().自定义的方法名

为了方便大家的理解,我将继续用上的里给大家讲解。

class A:
    def hello(self):
        print("我是A")
class B1(A):
    def hello(self):
        super().hello()
        print("我是B1")
class B2(A):
    def helolo(self):
        super().hello()
        print("我是B2")
class C(B1,B2):
    def __init__(self):
        super().hello()
        print("我是C")
c=C()

输出结果仍然是:

我是A
我是B1
我是C

 

我的分享到此结束,谢谢我的记录对你的学习会有帮助。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值