python新式类c3算法_python多继承C3算法,广度优先深度优先

在python中,一个A类同时继承B类和C类,传参顺序是B在左,C在右。B类和C类分别继承了BB类和CC类,此时此刻如果A类去查找一个方法有2种选择,1是广度优先,2是深度优先。

广度优先是先查询第一层B类和C类,如果都没有再往上查。深度优先是先查找B类,再查找BB类,如果没有再查找C和CC。

在python 2中,经典类采用的是深度优先查找法, 新式类采用的是广度优先;python3在多继承时采用一种新的C3算法来遍历父类,复杂的类看不出来是广度还是深度优先。

我们先写一个简单的例子,能看出来是广度优先还是深度优先的:

# -*- coding: utf-8 -*-

class WudangBase:

def fly(self):

print("武当老祖张三丰....")

class JiuyangBase:

def fly(self):

print("九阳真经老祖郭靖....")

class Wudang(WudangBase):

pass

class Jiuyang(JiuyangBase):

def fly(self):

print("九阳真经飞行术...")

class WuJi(Wudang,Jiuyang):

pass

if __name__ == "__main__":

p1= WuJi()

p1.fly()

武当老祖张三丰....

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值