1. 程式人生 > >python中經典類和新式類的區別

python中經典類和新式類的區別

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

python中經典類和新式類的區別