首先:
Python 2.x中默認都是經(jīng)典類,只有顯式繼承了object才是新式類
Python 3.x中默認都是新式類,不必顯式的繼承object
其次
新式類對象可以直接通過class屬性獲取自身類型:type
繼承搜索的順序發(fā)生了改變,經(jīng)典類多繼承屬性搜索順序: 先深入繼承樹左側(cè),再返回,開始找右側(cè);新式類多繼承屬性搜索順序: 先水平搜索证薇,然后再向上移動
-新式類增加了slots內(nèi)置屬性, 可以把實例屬性的種類鎖定到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