這篇文章主要介紹了深入淺析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)
然後程式碼的運行結果如下:
F:\python_code\test>python class_init.py init in c1 init in p1 f1 in p2 f1 in p2 11 22 2
關於的程式碼的運行過程,我有以下的疑問,我在c1 的__init__ 函數中會呼叫到p1.__init__(),然後會每次都是運行c1.f1() 函數,沒有運行p1.f1() 的函數,在p1 運行的f1(),怎麼也是c1.f1()。為什麼?
原因分析:
p1.__init__(self,a,b)
這行程式碼中的self是c1的對象。所以傳給p1裡面的self也就是c1的呀。
以上內容所述透過程式碼給大家介紹了python繼承問題,希望對大家有幫助!
更多淺析python繼承問題相關文章請關注PHP中文網!