深入淺析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)
然后代碼的運行結(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)于的代碼的運行過程,我有以下的疑問,我在 c1 的 __init__ 函數(shù)中會調(diào)用到p1.__init__(),然后會每次都是運行 c1.f1() 函數(shù),沒有運行 p1.f1() 的函數(shù),在 p1 運行的 f1(),怎么也是 c1.f1()。為什么?
原因分析:
p1.__init__(self,a,b)
這行代碼中的self是c1的對象。所以傳給p1里面的self也就是c1的呀。
以上內(nèi)容所述通過代碼給大家介紹了python繼承問題,希望對大家有所幫助!
相關(guān)文章
pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復用性
這篇文章主要為大家介紹了pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復用性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Python?pandas刪除指定行/列數(shù)據(jù)的方法實例
這篇文章主要給大家介紹了關(guān)于Python?pandas刪除指定行/列數(shù)據(jù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-01-01
使用pygame實現(xiàn)垃圾分類小游戲功能(已獲校級二等獎)
這篇文章主要介紹了使用pygame實現(xiàn)垃圾分類小游戲功能(已獲校級二等獎),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07

