有如下的代碼:
class p1:def __init__(self,a,b):print("init in p1")self.a1=aself.b1=bself.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=cself.f1()def f1(self):print("f1 in p2")class c2(c1):passc=c2(11,22)print(c.a1)print(c.b1)print(c.c1)然后代碼的運(yùn)行結(jié)果如下:
F:/python_code/test>python class_init.pyinit in c1init in p1f1 in p2f1 in p211222
關(guān)于的代碼的運(yùn)行過程,我有以下的疑問,我在 c1 的 __init__ 函數(shù)中會(huì)調(diào)用到p1.__init__(),然后會(huì)每次都是運(yùn)行 c1.f1() 函數(shù),沒有運(yùn)行 p1.f1() 的函數(shù),在 p1 運(yùn)行的 f1(),怎么也是 c1.f1()。為什么?
原因分析:
p1.__init__(self,a,b)
這行代碼中的self是c1的對(duì)象。所以傳給p1里面的self也就是c1的呀。
以上內(nèi)容所述通過代碼給大家介紹了python繼承問題,希望對(duì)大家有所幫助!
新聞熱點(diǎn)
疑難解答
圖片精選