python3所有的類都繼承自object類
新式類:
1.python3中,所有類都是新式類
2.python2中主動繼承object類
經典類:
python2中,不繼承object類
#多繼承:
class a:pass
class b(a):pass
#b繼承a
class c(a):pass
#c繼承a
class d(b, c):pass
#d同時繼承b和c
print(d.mro()) #
類的mro方法只在新式類中有,可以檢視該類的繼承順序
#新式類:廣度優先 可以直接使用類名.mro()方法檢視繼承順序
#當既可以走廣度又可以走深度時,總是廣度再深度
#d = d()
#d.屬性或方法時,本身沒有則從父類中找,順序為d-->b-->c-->a
#經典類:總是深度優先
#d = d()
#d.屬性或方法時,本身沒有則從父類中找,順序為d-->b-->a-->c
"""c3演算法:存在於新式類中,可以通過類.mro()方法檢視繼承順序的結果
如果是單繼承,那麼總是按照子類-->父類的順序來計算
例如:a(o) = [ao]
b(a) = [bao]
c(a) = [cao]
d(b) = [dbao]
e(c) = [ecao]
如果是多繼承,那麼需要按照自己本類,父類1的繼承順序,父類2的繼承順序....
f(d,e) = merge(d(b) + e(c))
= [f] + d(b) + e(c)
= [f] + [dbao] + [ecao]
= fd + [bao] + [ecao]
= fdb + [ao] + [ecao]
= fdbe + [ao] + [cao]
= fdbec + [ao] + [ao]
= fdbeca + [o] + [o]
= fdbecao
"""
繼承 新式類 經典類
目錄 二 利用繼承減少 冗餘 三 繼承的菱形問題 四 如何重用父親的屬性和方法 經典類 python2中有繼承類 新式類 python3中都是新式類 是一種新建類方式,繼承了乙個類,類中的屬性和方法就在子類中 父類 基類 子類 派生類 新式類 只要繼承了object類,在python3中,預設繼承o...
python多繼承(新式類)一
最近在學習python的多重繼承。先來了解下多重繼承的概念,所謂多重繼承,是指python的類可以有兩個以上父類,也即有類a,類b,類c,c同時繼承類a與類b,此時c中可以使用a與b中的屬性與方法。那麼問題來了,如果a與b中具有相同名字的方法,這個時候python怎麼呼叫的會是哪個方法呢?舉個例子 ...
python3 class寫法 新式類 經典類
經典類與新式類 python2和python3中新式類 經典類 舊式類 的區別 python新式類與經典類的區別 經典類 不由任意內建型別派生出的類 新式類 由任意內建型別派生出的類 只要乙個內建型別位於類樹的某個位置 python2.1 只有經典類 python2.2 引入新式類 python3 ...