python 經典類和新式類的區別?
阿新 • • 發佈:2018-12-12
1)首先,寫法不一樣:
#新式類是指繼承object的類
class A(object):
...........
#經典類是指沒有繼承object的類
class A:
...........
2)在多繼承中,新式類採用廣度優先搜尋,而舊式類是採用深度優先搜尋。
3)新式類更符合OOP程式設計思想,統一了python中的型別機制。
Python2.x中預設都是經典類,只有顯式繼承了object才是新式類
Python 3.x中預設都是新式類,不必顯式的繼承object
其次:
------新式類物件可以直接通過__class__屬性獲取自身型別:type
------繼承搜尋的順序發生了改變,經典類多繼承屬性搜尋順序: 先深入繼承樹左側,再返回,開始找右側;新式類多繼承屬性搜尋順序: 先水平搜尋,然後再向上移動
------新式類增加了__slots__內建屬性, 可以把例項屬性的種類鎖定到__slots__規定的範圍之中
------新式類增加了__getattribute__方法
最後: class A(): def __init__(self): pass def save(self): print "This is from A" class B(A): def __init__(self): pass class C(A): def __init__(self): pass def save(self): print "This is from C" class D(B,C): def __init__(self): pass fun = D() fun.save() 經典類的答案: This is from A 新式類的答案: This is from C