Python 類繼承方法覆蓋

2021-10-07 21:40:56 字數 1173 閱讀 2098

是指有繼承關係的類中 ,子類中實現了與基類中同名的方法 , 在子類例項中呼叫該方法時 , 實際呼叫的是子類中的方法 ,這種現象稱作覆蓋 , 也就是實現與父類同名 ,但是功能不同的方法 ,可以改變父類方法的功能。

# 定義子類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...