首頁  >  文章  >  後端開發  >  淺析python繼承問題

淺析python繼承問題

高洛峰
高洛峰原創
2017-03-02 16:01:281350瀏覽

這篇文章主要介紹了深入淺析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中文網!


#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn