python新式類和經典類的區別

2022-02-16 14:26:21 字數 754 閱讀 2132

父類或者以上有繼承的object就是新式類 沒有的則是經典類

1,新式類和經典類的區別:

廣度優先和深度優先,這主要是在多類繼承的時候會使用到,如下多類繼承的d類對比:

「新式類」和「經典類」的區分在python 3之後就已經不存在,在python 3.x之後的版本,因為所有的類都派生自內建型別object(即使沒有顯示的繼承object型別),即所有的類都是「新式類」。

經典類在載入的時候採用的是深度優先演算法,二新式類採用的是廣度優先演算法:比如

經典類: 搜尋順序是(d,b,a,c)

>>>class a: attr = 1

...>>> class b(a): pass

...>>> class c(a): attr = 2

...>>> class d(b,c): pass

...>>> x = d()

>>> x.attr

1

新式類繼承搜尋程式是寬度優先

新式類:搜尋順序是(d,b,c,a)

>>> class a(object): attr = 1

...>>> class b(a): pass

...>>> class c(a): attr = 2

...>>> class d(b,c): pass

...>>> x = d()

>>> x.attr

2

Python新式類和經典類的區別

從python2.2開始,python 引入了 new style class 新式類 新式類跟經典類的差別主要是以下幾點 新式類物件可以直接通過 class 屬性獲取自身型別 type python view plain copy coding utf 8 class e 經典類 pass cla...

Python新式類和經典類的區別

從python2.2開始,python 引入了 new style class 新式類 新式類跟經典類的差別主要是以下幾點 新式類物件可以直接通過 class 屬性獲取自身型別 type python view plain copy coding utf 8 class e 經典類 pass cla...

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

本文參考python核心程式設計一書class mynewobjecttype bases define mynewobjecttype class class suite 類體新式類和經典類的最大不同之處在於,所有的新式類必須至少乙個父類,引數bases可以是乙個或者多個用於繼承的父類。objec...