python中经典类和新式类的区别

要知道经典类和新式类的区别,首先要掌握类的继承。类的继承的一个优点就是减少代码,而且使代码看起来结构很完整。

那什么是经典类,什么是新式类呢?

经典类和新式类的主要区别就是类的继承的方式 ,经典类遵循深度优先的规则,新式类遵循广度优先的规则。至于什么是深度优先什么是广度优先,可以看如下示例:

# Author:Zhang Zhao
class A(object):
def __init__(self):
print('A')
class B(A):
pass
# def __init__(self):
# print('B')
class C(A):
def __init__(self):
print('C')
class D(B,C):
pass
# def __init__(self):
# print('D')
r1 = D()

在新式类中,D是继承B和C的,按照顺序,首先去找B,如果在B里面能找到实例化对象,便继承B,不再往别的地方寻找,如果没有,就会接着找C,而不是找B的父亲A!

但是在经典类中,如果B中找不到,它会优先考虑B的父亲A,而不是C。

在python3中,都是遵循广度优先的规则,在python2.7以前,应该是遵循深度优先的的规则。两种规则没有优劣之分。

上一篇:牛客练习赛31 D神器大师泰兹瑞与威穆


下一篇:div排版+文档流+定位秘诀