|
第一時(shí)間收到精彩推送! Python Every Day, 第 7 天 我們知道Python是一門面向?qū)ο蟮木幊陶Z(yǔ)言,既然面向?qū)ο缶蜕俨涣死^承。 繼承:表示子類可以使用其父類中方法。 在Python中,可以通過(guò)super() 函數(shù)來(lái)調(diào)用父類的方法。 如下所示,我定義了一個(gè) Person 類,有 說(shuō)、唱、rap、籃球 這四個(gè) 方法。 class Person():如果只有一個(gè)類 直接實(shí)例化.函數(shù)名的方式進(jìn)行調(diào)用即可。 假設(shè)我現(xiàn)在有個(gè)Student (學(xué)生類),同樣也可以說(shuō)、唱、Rap、籃球。如果再重新寫一遍這四個(gè)函數(shù)就比較麻煩。因此這個(gè)時(shí)候就可以用到繼承。學(xué)生類來(lái)繼承Person類(也就是說(shuō)Student是Person的子類,Person是Student的父類) 如下所示 Student、Student1 都繼承了Person類。 Student只會(huì) 說(shuō)、唱、rap、籃球。而Student1 還喜歡學(xué)習(xí)??梢栽俣x一個(gè)study函數(shù)。 上面只是用簡(jiǎn)單的代碼介紹了一下Python中的繼承。還沒(méi)有說(shuō)到如何用super()來(lái)調(diào)用父類的方法。 在子類中如果需要去掉用父類的方法時(shí),可以通過(guò) super(). 父類方法 的形式完成。 示例: class A:在B方法中調(diào)用my_info 時(shí),可以直接通過(guò)父類A中的get_name 方法 獲取到名字。 問(wèn)題: 如果一個(gè)子類繼承了兩個(gè)父類,并且父類中的方法名相同。那究竟會(huì)調(diào)用哪個(gè)類呢? 這個(gè)問(wèn)題可以通過(guò)類的內(nèi)置屬性 __mro__ 去查看調(diào)用順序。這個(gè)方法主要是在多繼承時(shí)判斷方法、屬性的調(diào)用路徑。 如上,C.__mro__ 打印結(jié)果可以執(zhí)行順序?yàn)?C -> A - >B 因此print(c.num)。因?yàn)閏中有num屬性,所以會(huì)打印3. 執(zhí)行c.method時(shí) 。因?yàn)閏中沒(méi)有method屬性,會(huì)去A中查找,則輸出 A..method。 |
|
|
來(lái)自: Four兄 > 《Python筆記》