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