Home >> Blog >> Python Super 操作指南
Python Super 操作指南
Python super() 方法允許您從子類中訪問父類中的方法。這有助於減少程式碼中的重複。super() 不接受任何參數。
像 Python 這樣的面向對象編寫程式語言的核心特性之一是繼承。繼承是指新類使用另一個類的程式碼來創建新類。
當您繼承類時,您可能希望獲得對父類方法的訪問權限。這就是super()函數的用武之地。
本教學會與其他SEO搜尋引擎優化文章一樣將通過範例討論 Python 中繼承的基礎知識。然後,我們將討論如何使用super()函數從父類繼承值和方法。
什麼是 Python super?
Python super() 方法允許您訪問父類中的方法。您可以將 super() 視為一種跳轉以查看繼承另一個類的類中的方法的方法。
super() 方法的語法如下:
class Food ():
def __init__ ( self , name) :
self.name = name
class Cheese ( Food ): def __init__ ( self , brand) :
super ().__init__()
self.brand = brand
super() 方法不接受任何參數。在 super() 方法之後指定要繼承的方法。上面 Cheese Python 類繼承了 Food 類 __init__() 方法的值。我們調用 super() 類方法從 Food 類繼承值。
Python 繼承是指新類使用現有類中的程式碼來定義新類的結構的過程。
考慮繼承的一種方法是考慮孩子如何從父母那裡繼承特徵。孩子的頭髮顏色可以和父母一樣,也可以繼承父母的姓氏。
在 Python 中,有兩種類型的類:
- 子類(或“子類”)繼承方法和變量。子類有時稱為兄弟類。
- 父類(或“基類”)是可以繼承其值的類。
super() Python: 繼承自 __init__()
假設我們正在構建一個銀行賬戶系統來跟踪在銀行持有賬戶的人的憑據。為此,我們要創建一個存儲支票賬戶數據的類。我們可以使用以下程式碼來做到這一點:
class CheckingAccount:
def __init__(self, name, balance):
self.name = name
self.balance = balance
def checkBalance(self):
print("Balance:", self.balance)
此程式碼創建支票賬戶的藍圖。
現在,假設我們要創建一個類來存儲子銀行賬戶的藍圖,我們將其稱為ChildAccount。這個類應該基於我們之前定義的CheckingAccount類。為此,我們可以使用super()函數。
super()允許您在子類中訪問父類的方法。
在我們的範例中,我們的父類稱為CheckingAccount,我們的子類稱為ChildAccount。CheckingAccount為銀行帳戶創建藍圖,而ChildAccount繼承CheckingAccount的值以創建自己的類。
向類添加新值
現在,假設我們希望ChildAccount類繼承存儲在CheckingAccount中的值。但是,我們還希望這個帳戶存儲一個名為is_child的新值,默認情況下它應該等於 True。
我們可以使用以下程式碼創建新的ChildAccount類:
class ChildAccount(CheckingAccount):
def __init__(self, name, balance, is_child=True):
self.is_child = is_child
super().__init__(name, balance)
這段程式碼為我們的新ChildAccount類創建了一個藍圖。我們使用super()方法從CheckingAccount類繼承名稱和余額值。我們將CheckingAccount指定為類第一行括號中的父類。
這表明super()允許您從另一個類繼承所有值。但是,在我們的程式碼中,我們還聲明了一個名為is_child的新值。這個值只能被任何ChildAccount訪問,因為我們在ChildAccount類中聲明了它。
要為兒童帳戶持有人創建我們的類的實例,我們可以使用以下程式碼:
Tlynn = ChildAccount( "Lynn" , 200)
打印(lynn.name)
打印(lynn.balance)
打印(lynn.is_child)
我們的程式碼返回:
Lynn
200
True
我們已經聲明了一個分配給Python 變量lynn的ChildAccount類的實例。lynn是一個類對象,因為我們已經使用一個對象聲明了lynn的值。
Lynn 的賬戶有 200 美元,is_child的值默認為 True。然後,我們打印出與 Lynn 帳戶關聯的name、balance和is_child的值。我們使用Python print() 方法將這些值打印到控制台。
因為我們從CheckingAccount類繼承了name和balance ,所以我們可以在程式碼中使用它們。但是,Lynn 的帳戶還為 is_child 設置了一個值,對於ChildAccount的所有實例,該值默認設置為 True 。
super() Python:繼承方法
super()允許您使用單級繼承來繼承類——從父類繼承一個類。或者您可以將super()與多級繼承一起使用。對於這個例子,我們將專注於使用super()的單級繼承。
在我們之前的範例中,我們使用super()來繼承存儲在CheckingAccount類中的值,並使它們在ChildAccount類中可訪問。但是如果我們想繼承一個方法並修改它的響應呢?
讓我們回到之前的 CheckingAccount 類:
Tclass CheckingAccount:
def __init__(self, name, balance):
self.name = name
self.balance = balance
def checkBalance(self):
print("Balance:", self.balance)
在這個類中,我們定義了類應該存儲的值的藍圖——name和balance。我們定義了一個名為checkBalance()的方法,它允許用戶檢查他們的餘額。
現在,假設我們想讓ChildAccount可以訪問checkBalance ()。我們還想打印一條消息,說明“您是兒童帳戶持有人!” 這應該在用戶的餘額被打印到控制台之前出現。
我們可以像這樣訪問我們繼承的方法:
class ChildAccount(CheckingAccount):
def __init__(self, name, balance, is_child=True):
self.is_child = is_child
super().__init__(name, balance)
def checkBalance(self):
print("You are a child account holder!")
super().checkBalance()
我們在 ChildAccount 類中聲明了新版本的checkBalance ()方法。這個版本首先打印“你是兒童賬戶持有人!” 到控制台。然後我們的程式碼使用super()從類的父級執行checkBalance()方法。
在這種情況下,當super().checkBalance()運行時,將執行CheckingAccount類中的checkBalance()函數。這會將用戶的餘額打印到控制台。
現在,讓我們嘗試訪問Lynn 帳戶的checkBalance()方法:
lynn = ChildAccount( "Lynn" , 200)
lynn.checkBalance()
我們的程式碼返回:
You are a child account holder!
Balance: 250
當我們調用方法lynn.checkBalance()時,我們的 ChildAccount.checkBalance( )方法中的程式碼被運行,然後super對象執行CheckingAccount.checkBalance()方法中的程式碼。
super()函數允許我們使用父方法,同時仍然能夠在我們的子類中覆蓋這些方法。
結論
Python super()函數允許您從父類繼承方法。super() 函數可以幫助您編寫更具可讀性的程式碼,因為您可以重用現有函數中的程式碼。
本教學通過範例討論瞭如何使用super()函數從父類繼承值和方法。現在,您已經具備了開始使用 super() 函數所需的知識,就像 Python 專業人士一樣!
有關 Python 編寫程式的更多資源,請閱讀我們完整的如何學習 Python 指南。