python中經典類和新式類的區別
阿新 • • 發佈:2019-02-12
規則 應該 color isp 的區別 object pla 什麽是 view
要知道經典類和新式類的區別,首先要掌握類的繼承。類的繼承的一個優點就是減少代碼,而且使代碼看起來結構很完整。
那什麽是經典類,什麽是新式類呢?
經典類和新式類的主要區別就是類的繼承的方式 ,經典類遵循深度優先的規則,新式類遵循廣度優先的規則。至於什麽是深度優先什麽是廣度優先,可以看如下示例:
# Author:Zhang Zhao class A(object): def __init__(self): print(‘A‘) class B(A): pass # def __init__(self): # print(‘B‘) classView CodeC(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以前,應該是遵循深度優先的的規則。兩種規則沒有優劣之分。
python中經典類和新式類的區別