当前位置: 首页 > news >正文

关键字查询我的网站怎么做如何做互联网营销推广

关键字查询我的网站怎么做,如何做互联网营销推广,网站数据库订购,网站访问量大 处理python多继承的3C算法 有很多地方都说python多继承的继承顺序,是按照深度遍历的方式,其实python多继承顺序的算法,不是严格意义上的深度遍历,而是基于深度遍历基础上优化出一种叫3C算法 python多继承的深度遍历 class C:def ru…

python多继承的3C算法

有很多地方都说python多继承的继承顺序,是按照深度遍历的方式,其实python多继承顺序的算法,不是严格意义上的深度遍历,而是基于深度遍历基础上优化出一种叫3C算法

python多继承的深度遍历

class C:def run(self):print("这个是C类的方法");pass;class A(C):# def run(self):#     print("这个是A类的方法");pass;class B:def run(self):print("这个是B类的方法");class MainC(A,B):pass;# def run(self):#     print("这个是子类的方法");m1 = MainC();
m1.run();
print(MainC.mro())

在这里插入图片描述
这段代码输出的结果就是
这个是C类的方法
[<class ‘main.MainC’>, <class ‘main.A’>, <class ‘main.C’>, <class ‘main.B’>, <class ‘object’>]

每个类如果没有继承其他类的话就默认继承object这个基类
这个是比较正常的多继承,然后是深度遍历的方式

重复继承的问题

基于上面改造一下

class C:def run(self):print("这个是C类的方法");pass;class A(C):# def run(self):#     print("这个是A类的方法");pass;class B(C):def run(self):print("这个是B类的方法");class MainC(A,B):pass;# def run(self):#     print("这个是子类的方法");m1 = MainC();
m1.run();
print(MainC.mro())

在这里插入图片描述

这个继承顺序就有意思了,main继承A和B,A继承C,B也继承C,这就出现了重复继承的问题,那这种情况python是如何决定继承顺序的呢
输出结果:

这个是B类的方法
[<class '__main__.MainC'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class 'object'>]

这个结果就出乎意料了,因为按照深度遍历的方式的话,也应该继承C再继承B,但是却不是这样的
这个是因为python对于重复继承的处理,按照这个继承方式的话继承顺序是这样的
mianC先继承A,然后到查看C的情况,发现C同时被A和B继承了,然后就先不处理,接着继承B,然后看C的时候发现,没有其他的继承了,就接着继承C

更加复杂的继承

class F:def run(self):print("这个是F类的方法");pass;class G:def run(self):print("这个是G类的方法");pass;class E(F,G):def run(self):print("这个是E类的方法");pass;class C(E):def run(self):print("这个是C类的方法");pass;
class D(E):def run(self):print("这个是D类的方法");class A(C):# def run(self):#     print("这个是A类的方法");pass;class B(D):def run(self):print("这个是B类的方法");class MainC(A,B):pass;# def run(self):#     print("这个是子类的方法");m1 = MainC();
m1.run();
print(MainC.mro())

在这里插入图片描述
继承顺序:

[<class '__main__.MainC'>, <class '__main__.A'>, <class '__main__.C'>, <class '__main__.B'>, <class '__main__.D'>, <class '__main__.E'>, <class '__main__.F'>, <class '__main__.G'>, <class 'object'>]

这个就是跟复杂的多继承了,但是只要用到上面说的逻辑去推理就知道继承顺序了
mainc先继承A,然后看C,没有被重复继承,就继承C,再看E,E被重复继承了,先不处理,再从上面开始看,看B,没有被重复继承,再看D也没有被重复继承,直接继承,再看E,也没有其他的再继承了就可以直接继承,然后再看F,没有重复继承,就继承,再到G

这个就是实际上python多继承顺序的算法,如果单纯说是深度遍历,其实是不对的

注意

尽量不要用多继承,尽量不要用多继承,尽量不要用多继承
用多继承会让你的程序变得复杂又难读,产生的bug也难查

http://www.tj-hxxt.cn/news/105252.html

相关文章:

  • 济南制作网站有哪些51网站统计
  • html5手机网站开发经验百度在线识图
  • 哈尔滨企业网站重庆seo服务
  • 建设网站需申请什么手续自己的网站怎么做seo
  • 东丽集团网站建设网络营销推广方案模板
  • 产品如何做网站推广百度电话客服24小时人工
  • 游戏网站平台创建app平台
  • 公司网站的后台关于进一步优化落实疫情防控措施
  • 专门做游戏攻略的网站搜索指数
  • 网站建设的好处爱站网综合查询
  • 南海建设工程交易中心网站重庆森林讲的什么内容
  • 如何看网站的版本号怎样有效的做网上宣传
  • 网站主机购买最好用的磁力搜索神器
  • 做网站算经商吗潜江seo
  • 做网站的工资宁波seo在线优化方案
  • 织梦印刷公司网站源码全媒体运营师培训费用
  • 那里做网站好网站seo基础优化
  • 深圳东门步行街东莞seo顾问
  • 渭南网站建设服务谷歌浏览器在线入口
  • 做网站开发赚钱吗seo网络推广技术
  • 自己建一个网站需要什么国内疫情最新消息
  • 如何降低网站相似度手机建网站软件
  • 建设银行四川分行 招聘网站哪里有正规的电商培训班
  • 保定网站制作排名需要多少钱黄冈网站推广软件视频下载
  • 做母婴网站怎样做一个产品营销方案
  • 哈尔滨可以做网站的公司seo推广有哪些公司
  • 怎么做网站管理系统百度首页网址
  • 网站建设案例教程网络营销特点
  • 南宁最高端网站建设东莞疫情最新数据
  • 塘沽网站建设厦门seo搜索引擎优化