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()
View Code

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

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

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

 

posted @ 2019-02-12 11:23  妇愁者  阅读(1362)  评论(0编辑  收藏  举报