是指有繼承關係的類中 ,子類中實現了與基類中同名的方法 , 在子類例項中呼叫該方法時 , 實際呼叫的是子類中的方法 ,這種現象稱作覆蓋 , 也就是實現與父類同名 ,但是功能不同的方法 ,可以改變父類方法的功能。
# 定義子類mylist , 繼承於list父類
class mylist(list):
pass
# 例項化
l = mylist(range(1,10))
print(l)
輸出內容:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
class mylist(list):
print("子類方法覆蓋了父類方法")
l = mylist(range(1,10))
# 此時呼叫後會執行子類中的方法
print(l)
輸出內容:
子類方法覆蓋了父類方法
[1, 2, 3, 4, 5, 6, 7, 8, 9]
如果子類例項想要呼叫父類方法應該怎麼做 ?
在方法內直接使用super()
class mylist(list):
print("子類方法覆蓋了父類方法")
l = mylist(range(1,10))
print(l)
輸出內容
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 如果在子類中實現了__init__方法後 , 子類例項呼叫的是子類中的初始化方法 , 如果此時想要呼叫父類中# 的初始化方法 , 需要使用super()
class mylist(list):
def __init__(self , *args):
pass
myl = mylist([1,2,3,4,5])
print(myl)
# 此時會輸出 [6]
使用super
class mylist(list):
def __init__(self , *args):
super(mylist,self).__init__(*args)
myl = mylist([1,2,3,4,5])
print(myl)
輸出 [1,2,3,4,5,6]
Python 類 繼承 避免覆蓋父類方法
1.類名的首字母一般大寫,函式名的首字母一般小寫。2.不繼承建立類後邊不加括號 繼承建立類後面加括號,括號中為父類。3.繼承後類中不寫內容,直接呼叫pass即可 繼承後類中寫內容,不寫pass。4.子類中定義與父類同名的方法或屬性,會自動覆蓋父類對應的方法和屬性。5.避免4中情況有兩種方法 1 呼叫...
Python實現通過繼承覆蓋方法示例
python真是太動態了,所有的方法預設都是虛的。子類定義父類同名函式之後,父類函式被覆蓋。class p object def foo self print i am a p foo class c p def foo self print i am a c foo p p c c p.foo i...
python 類 繼承 python 類的繼承
1 所用的類都可以被繼承 2 沒有繼承其他類的類必然有乙個父類 object 3子類可以擁有父類的 init 裡的類容 派生子類除了父類的一些屬性,還會有自己的屬性和方法,這些就叫派生 如何使用 實現 class animal def init self,name,attack,hp self.na...