首先什么是新式類 經典類呢:
#新式類是指繼承object的類 class A(object): ........... #經典類是指沒有繼承object的類 class A: ...........
Python中推薦大家使用新式類 1.新的肯定好哈,已經兼容經典類
2.修復了經典類中多繼承出現的bug
下面我們着重說一下多繼承的bug 如圖:
BC 為A的子類, D為BC的子類 ,A中有save方法,C對其進行了重寫
在經典類中 調用D的save方法 搜索按深度優先 路徑B-A-C, 執行的為A中save 顯然不合理
在新式類的 調用D的save方法 搜索按廣度優先 路徑B-C-A, 執行的為C中save
#經典類 class A: def __init__(self): print 'this is A' def save(self): print 'come from A' class B(A): def __init__(self): print 'this is B' class C(A): def __init__(self): print 'this is C' def save(self): print 'come from C' class D(B,C): def __init__(self): print 'this is D' d1=D() d1.save() #結果為'come from A
#新式類 class A(object): def __init__(self): print 'this is A' def save(self): print 'come from A' class B(A): def __init__(self): print 'this is B' class C(A): def __init__(self): print 'this is C' def save(self): print 'come from C' class D(B,C): def __init__(self): print 'this is D' d1=D() d1.save() #結果為'come from C'