深入淺析python繼承問題
有如下的代碼:
class p1: def __init__(self,a,b): print("init in p1") self.a1=a self.b1=b self.f1() def f1(self): print("f1 in p1") class c1(p1): def __init__(self,a,b,c=2): print("init in c1") p1.__init__(self,a,b) self.c1=c self.f1() def f1(self): print("f1 in p2") class c2(c1): pass c=c2(11,22) print(c.a1) print(c.b1) print(c.c1)
然后代碼的運(yùn)行結(jié)果如下:
F:\python_code\test>python class_init.py init in c1 init in p1 f1 in p2 f1 in p2 11 22 2
關(guān)于的代碼的運(yùn)行過程,我有以下的疑問,我在 c1 的 __init__ 函數(shù)中會調(diào)用到p1.__init__(),然后會每次都是運(yùn)行 c1.f1() 函數(shù),沒有運(yùn)行 p1.f1() 的函數(shù),在 p1 運(yùn)行的 f1(),怎么也是 c1.f1()。為什么?
原因分析:
p1.__init__(self,a,b)
這行代碼中的self是c1的對象。所以傳給p1里面的self也就是c1的呀。
以上內(nèi)容所述通過代碼給大家介紹了python繼承問題,希望對大家有所幫助!
相關(guān)文章
一文帶你了解Python協(xié)程的詳細(xì)解釋以及例子
協(xié)程不是計(jì)算機(jī)提供的,計(jì)算機(jī)只提供:進(jìn)程、線程。協(xié)程是人工創(chuàng)造的一種用戶態(tài)切換的微進(jìn)程,使用一個線程去來回切換多個進(jìn)程,本文就來通過一些示例和大家詳細(xì)聊聊Python中的協(xié)程吧2023-03-03pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復(fù)用性
這篇文章主要為大家介紹了pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復(fù)用性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python?pandas刪除指定行/列數(shù)據(jù)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Python?pandas刪除指定行/列數(shù)據(jù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01使用pygame實(shí)現(xiàn)垃圾分類小游戲功能(已獲校級二等獎)
這篇文章主要介紹了使用pygame實(shí)現(xiàn)垃圾分類小游戲功能(已獲校級二等獎),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07python如何實(shí)現(xiàn)多層級自動賦值字典
這篇文章主要介紹了python如何實(shí)現(xiàn)多層級自動賦值字典問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08基于Python實(shí)現(xiàn)的掃雷游戲?qū)嵗a
這篇文章主要介紹了基于Python實(shí)現(xiàn)的掃雷游戲?qū)嵗a,對于Python的學(xué)習(xí)以及Python游戲開發(fā)都有一定的借鑒價值,需要的朋友可以參考下2014-08-08