python的多繼承

python和C++一樣坷剧,支持多繼承惰爬。概念雖然容易,但是困難的工作是如果子類調(diào)用一個自身沒有定義的屬性惫企,它是按照何種順序去到父類尋找呢撕瞧,尤其是眾多父類中有多個都包含該同名屬性。

classP1#(object):

? ? deffoo(self):

? ? ? ? print'p1-foo'

classP2#(object):

? ? deffoo(self):

? ? ? ?print'p2-foo'

? ? defbar(self):

? ? ? ? print'p2-bar'

classC1?(P1,P2):

? ? ?pass

classC2?(P1,P2):

? ? defbar(self):

? ? ? ? print'C2-bar'

classD(C1,C2):

? ? ?pass

對經(jīng)典類和新式類來說狞尔,屬性的查找順序是不同的〈园妫現(xiàn)在我們分別看一下經(jīng)典類和新式類兩種不同的表現(xiàn)

1、經(jīng)典類

d=D()

d.foo()#?輸出?p1-foo

d.bar()#?輸出?p2-bar

實例d調(diào)用foo()時沪么,搜索順序是 D => C1 => P1

實例d調(diào)用bar()時硼婿,搜索順序是 D => C1 => P1 => P2

換句話說,經(jīng)典類的搜索方式是按照“從左至右禽车,深度優(yōu)先”的方式去查找屬性寇漫。d先查找自身是否有foo方法,沒有則查找最近的父類C1里是否有該方法殉摔,如果沒有則繼續(xù)向上查找州胳,直到在P1中找到該方法,查找結(jié)束逸月。

2栓撞、新式類

使用新式類要去掉第一段代碼中的注釋

d=D()

d.foo()#?輸出?p1-foo

d.bar()#?輸出?c2-bar

實例d調(diào)用foo()時,搜索順序是 D => C1 => C2 => P1

實例d調(diào)用bar()時,搜索順序是 D => C1 => C2

可以看出瓤湘,新式類的搜索方式是采用“廣度優(yōu)先”的方式去查找屬性瓢颅。其實是 拓撲排序 。

拓撲排序 ? 就是每次取入度等于0的節(jié)點弛说,如果沒有特別復雜的繼承關(guān)系看起來就像是 BFS(廣度優(yōu)先)

可以調(diào)用類的__mro__屬性來查看查找順序

文章摘選自:http://2577885.blog.51cto.com/2567885/669322

拓撲排序:來自:https://songlee24.github.io/2015/05/07/topological-sorting/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挽懦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子木人,更是在濱河造成了極大的恐慌信柿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醒第,死亡現(xiàn)場離奇詭異渔嚷,居然都是意外死亡,警方通過查閱死者的電腦和手機稠曼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門形病,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霞幅,你說我怎么就攤上這事窒朋。” “怎么了蝗岖?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵诲宇,是天一觀的道長密浑。 經(jīng)常有香客問我,道長绑雄,這世上最難降的妖魔是什么唧取? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任铅鲤,我火速辦了婚禮,結(jié)果婚禮上枫弟,老公的妹妹穿的比我還像新娘邢享。我一直安慰自己,他們只是感情好淡诗,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布骇塘。 她就那樣靜靜地躺著,像睡著了一般韩容。 火紅的嫁衣襯著肌膚如雪款违。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天群凶,我揣著相機與錄音插爹,去河邊找鬼。 笑死,一個胖子當著我的面吹牛赠尾,可吹牛的內(nèi)容都是我干的力穗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼气嫁,長吁一口氣:“原來是場噩夢啊……” “哼当窗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杉编,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤超全,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后邓馒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘶朱,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年光酣,在試婚紗的時候發(fā)現(xiàn)自己被綠了疏遏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡救军,死狀恐怖财异,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唱遭,我是刑警寧澤戳寸,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站拷泽,受9級特大地震影響疫鹊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜司致,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一拆吆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脂矫,春花似錦枣耀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拄轻,卻和暖如春缝彬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哺眯。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工谷浅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓一疯,卻偏偏與公主長得像撼玄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子墩邀,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容