Python2.x中新式类和经典类的区别

tips:Python3.x中全都是新式类
经典类和新式类只存在于Python2.x中

1,新式类和经典类的区别:
广度优先和深度优先,这主要是在多类继承的时候会使用到,如下多类继承的D类对比:
经典类在加载的时候采用的是深度优先算法,二新式类采用的是广度优先算法:比如
经典类: 搜索顺序是(D,B,A,C)
class A: attr = 1

class B(A): pass

class C(A): attr = 2

class D(B,C): pass

x = D()
x.attr
1

新式类继承搜索程序是宽度优先
新式类:搜索顺序是(D,B,C,A)
class A(object): attr = 1

class B(A): pass

class C(A): attr = 2

class D(B,C): pass

x = D()
x.attr

2(总结:
1:经典类的深度优先,子类继承多个父类的时候,如果继承的多个类中有属性相同的,那么排在第一的父类的属性会覆盖后面继承的类的属性,也就是如果集成的多个父类属性相同,那么以继承的第一个父类的属性为主;
2:新式类的广度优先算法:子类继承多个父类的时候,如果继承的多个父类中有属性相同的,那么越往后继承的类将会覆盖前面的类的属性,也就是后来的继承的覆盖前面的;真正发挥了长江后浪推前浪的传统)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值