要知道經典類和新式類的區別,首先要掌握類的繼承。類的繼承的一個優點就是減少代碼,而且使代碼看起來結構很完整。
那什么是經典類,什么是新式類呢?
經典類和新式類的主要區別就是類的繼承的方式 ,經典類遵循深度優先的規則,新式類遵循廣度優先的規則。至於什么是深度優先什么是廣度優先,可以看如下示例:

# 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以前,應該是遵循深度優先的的規則。兩種規則沒有優劣之分。