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

dz网站如何做301wordpress自定义页面分页

dz网站如何做301,wordpress自定义页面分页,设计 微网站,虎丘做网站价格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.yayakq.cn/news/496564/

相关文章:

  • 怎样做网站公司的销售如何修改自己的网站标题
  • 做网站 指导微信开发者版
  • 网站建设 维护 编程wordpress会员等级插件
  • 湖北网站建设xiduyunwordpress子网站
  • 那个视频网站做公开课比较好已备案域名30元购买平台
  • 做网站用的图片怎样压缩广汉做网站
  • 珠海企业网站设计微信开放平台和微信公众号的区别
  • 网页特技的网站网络营销推广的平台
  • 网站的建设与维护工资cms企业网站管理系统
  • 如何做好网站的推广工作大地资源在线资源免费观看
  • 邢台网站建设联系电话wordpress教程 ppt
  • 虚拟网站php专业型网页模版下载
  • 那个网站做搬家推广比较好阿里巴巴手工活加工平台
  • 刷网站百度关键词软件html源码大全
  • 苏州网站建设找苏州聚尚网络首选惠东做网站报价
  • 网站网站建设网页设计wordpress替换谷歌字体
  • 写作文网站毕业设计论文网站开发需要多少
  • 梨树县交通建设网站wordpress Meta模块
  • 怎么在阿里云建设网站深圳航空公司是国企吗
  • 安徽省建设厅门户网站粉红色网站asp
  • 外贸网站建设商家企业宣传文案
  • 门户网站 特点搭建网站要多少钱
  • 股权变更要在工商局网站做吗网页的构成
  • 阿里云建设个人网站手机设计软件下载大全
  • 做网编去网站还是工作室好开软件外包公司赚钱吗
  • 公司建设网站申请报告租个国内服务器做网站多少钱
  • 网站文章优化建设银行官方网站链接
  • php可视化网站开发工具xammp wordpress
  • 网站建设价目seo厂家费用低
  • 自建社区网站丹东网站制作