一、背景介紹
Python是一種高級語言,擁有多種繼承方式。在Python的繼承中,子類可以調用父類的方法。本文主要以Python調用父類方法的示例為中心,詳細介紹Python中調用父類方法的方法和技巧。
二、正文
1、基本概念介紹
在Python的繼承中,子類可以使用super()函數調用父類的方法,這樣可以避免子類和父類之間出現命名衝突的問題,同時也可以使父類方法的實現與子類的實現解耦,更加靈活。在使用super()函數時,可以用參數指定要調用方法的父類。
class Parent():
def function1(self):
print("Parent function1")
class Child(Parent):
def function1(self):
super().function1()
print("Child function1")
在上面的示例中,父類Parent中定義了function1()方法,子類Child中也覆蓋了function1()方法。在子類Child中使用super().function1()調用了父類Parent中的function1()方法,然後繼續執行Child中定義的function1()方法。這樣就可以使用兩個方法。
2、使用多繼承
在Python中我們可以使用多繼承的方式使一個類繼承多個父類。在多繼承時,如果子類中有與多個父類同名的方法,Python會按照MRO算法(C3線性化算法)來決定使用哪一個父類的方法。子類可以使用super()函數來調用父類的方法。
class Parent1():
def function1(self):
print("Parent1 function1")
class Parent2():
def function1(self):
print("Parent2 function1")
class Child(Parent1, Parent2):
def function1(self):
super(Parent2, self).function1()
print("Child function1")
在上面的示例中,Child繼承了Parent1和Parent2兩個類,在Child中覆蓋了function1()方法。使用super(Parent2, self).function1()調用了Parent2類中的function1()方法。然後繼續執行Child中定義的function1()方法。
3、使用無須寫出父類名的super()函數
在Python 3.x中,使用無須寫出父類名的super()函數可以優化代碼,並且簡化了代碼。在Python2.x中使用無須寫出父類名的super()函數會報錯。使用無須寫出父類名的super()函數時,Python會自動推導出使用哪一個父類的方法。
class Parent1():
def function1(self):
print("Parent1 function1")
class Parent2():
def function1(self):
print("Parent2 function1")
class Child(Parent1, Parent2):
def function1(self):
super().function1()
print("Child function1")
在上面的示例中,使用無須寫出父類名的super()函數調用了一個合適的父類的方法,並且沒有報錯。
三、小結
本文圍繞Python調用父類方法的示例詳細介紹了使用Python調用父類方法的方法和技巧。使用super()函數可以解決子類和父類之間出現命名衝突的問題,也可以使子類和父類之間的實現解耦,使代碼更加靈活和可維護。在多繼承時,可以使用MRO算法來決定子類使用哪個父類的方法,子類可以使用super()函數調用父類的方法,而無須顯式指定父類的名稱。
原創文章,作者:QDLX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/142547.html