首先:
Python 2.x中默認(rèn)都是經(jīng)典類,只有顯式繼承了object才是新式類
Python 3.x中默認(rèn)都是新式類,不必顯式的繼承object
其次
新式類對(duì)象可以直接通過(guò)class屬性獲取自身類型:type
繼承搜索的順序發(fā)生了改變,經(jīng)典類多繼承屬性搜索順序: 先深入繼承樹(shù)左側(cè),再返回,開(kāi)始找右側(cè);新式類多繼承屬性搜索順序: 先水平搜索,然后再向上移動(dòng)
-新式類增加了slots內(nèi)置屬性, 可以把實(shí)例屬性的種類鎖定到slots規(guī)定的范圍之中
新式類增加了getattribute方法
再然后
在多繼承中,新式類采用廣度優(yōu)先搜索,而舊式類是采用深度優(yōu)先搜索。
最后
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()
經(jīng)典類的答案: This is from A
新式類的答案: This is from C