python筆記: 經典類和新式類的區別
阿新 • • 發佈:2018-11-07
python 筆記:經典類和新式類的區別
Python 2.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
連結:
https://www.zhihu.com/question/22475395/answer/134514931
https://www.zhihu.com/question/22475395/answer/133787573
來源:知乎