首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python对象-类class(二)

类的多重继承

当构建一个类时,如果来自于多个父类,那么就需要考虑类的多重继承。python中类有经典类和新式类之分,两种类的多重继承方法存在差异。

经典类

在Python中,经典类出现在python早期的版本,搜索属性时按深度优先搜索。当一个类来源于多个父类时,优先从左到右搜索,在搜索第一个父类时,若其中没有对应属性,会继续搜索该父类所继承的父类,直至搜索结束,然后才去搜索第二个继承的类,示例如下。

从上面的运行结果可以看出,在调用show属性时,优先查找B类,找到之后输出B;在调用shew时,优先查找B类,没有的话去搜索B类的父类A,找到后输出A2;在整个过程中,没有去搜索C类。

新式类

对于新式类而言,搜索属性时按广度优先搜索,也就是会优先去搜索统计的父类,找到之后运行,找不到在去考查第二层的父类,具体见以下实例,类的定义和上面一样。

从上述代码可以看出,通过可以输出D类的继承顺序,也就是D-->B-->C-->A-->object;从输出结果来看,test.show()在执行时输出的是B,运行的是B类中定义的show,test.shew()在执行时输出的是C,运行的是C类中定义的shew,此处并不向经典类中去调用A.show(),而是调用C.show(),由此可以看出是按广度搜索,B类中没有对应的object时,下一个搜索C类,C类中没有的话再找B、C继承的父类:A。

以上就是在类的多重继承特性,主要是由于类的类别不同,导致继承时搜索的顺序不同,在python2中,2.2版本引入新式类概念,但是默认采用的类定义方法为经典类,python3默认的是新式类,这点需要特别注意。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180905G1SYBO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券