码迷,mamicode.com
首页 > 其他好文 > 详细

多继承

时间:2018-10-02 18:03:32      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:方法   继承   super   bsp   顺序   技术   图片   http   info   

# 多继承
#  多继承中,我们子类中的对象调用一个方法,默认是就近原则,找的顺序是什么?
    # 新式类中的继承顺序
        # 左右为广度,上线为深度,广度优先算法
    # 经典类中的继承顺序
        # 深度优先
    # python2.7 新式类与经典类共存,新式类要继承object
    # python3 只有新式类,默认继承object
    # 经典类和新式类还有一个区别  mro方法只在新式类中有, super只在python3中存在
        # mro可以得到继承顺序
        # super的本质:不是直接单纯的找父类,而是根据调用者的节点位置的广度顺序来找的


# 钻石继承
class A:
    def func(self):
        print(A)

class B(A):
    #pass
    def func(self):print(B)

class C(A):
    def func(self):
        print(C)

class D(B, C):
    #pass
    def func(self):print(D)

d = D()
d.func()
print(D.mro())  # 使用此方法可以得到D 的继承顺序  [<class ‘__main__.D‘>, <class ‘__main__.B‘>, <class ‘__main__.C‘>, <class ‘__main__.A‘>, <class ‘object‘>]

 

  1.钻石继承的顺序(新式类中)

技术分享图片

  2.小乌龟的继承顺序

技术分享图片

 

  3.关于super在新式类中多继承时的关系

技术分享图片

多继承

标签:方法   继承   super   bsp   顺序   技术   图片   http   info   

原文地址:https://www.cnblogs.com/whylinux/p/9736950.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!