Python OOP 繼承:父類別和子類

學習 Python OOP 中的繼承。掌握子類別化、重寫方法、使用 super() 和多重繼承模式。

在編輯器中嘗試

概述

繼承是物件導向程式設計(OOP)的基本支柱之一。它是一種允許新類別(稱為子類別或子類別)採用現有類別(稱為父類別或超類別)的屬性和方法的機制。這種設計模式可以促進程式碼重複使用,減少冗餘,並在應用程式的不同元件之間建立邏輯的層次關係。

若要在 Python 中實作繼承,請在子類別定義期間在括號內傳遞父類別名稱:`class Child(Parent):`。子類別立即繼承父類別的所有方法和變數。如果子級需要自訂行為,它可以透過使用相同名稱重新定義來覆寫任何父級方法。在重寫的方法中,您仍然可以使用內建的“super()”函數呼叫父級的實現,確保您可以擴展而不是完全替換現有邏輯。

與許多靜態型別語言不同,Python 本身支援多重繼承,這表示子類別可以從多個父類別繼承(例如,「class SmartDevice(Camera, Phone):」)。為了解決名稱衝突時執行哪個父方法的問題,Python 使用了一種稱為方法解析順序 (MRO) 的嚴格演算法。了解如何建構繼承樹和使用 super() 對於設計可擴展的物件導向體系結構至關重要。

程式碼和執行輸出

建立一個父 Vehicle 類別和一個使用 super() 覆寫初始化的子 Car 子類別。

inheritance.py
在編輯器中嘗試
class Vehicle:
    def __init__(self, brand, year):
        self.brand = brand
        self.year = year

    def display_info(self):
        return f"{self.year} {self.brand}"

class Car(Vehicle):
    def __init__(self, brand, year, model):
        # Call parent constructor
        super().__init__(brand, year)
        self.model = model

    def display_info(self):
        # Override parent method and extend it
        parent_info = super().display_info()
        return f"{parent_info} {self.model}"

my_car = Car("Ford", 2026, "Mustang")
print(my_car.display_info())
端子輸出
2026 Ford Mustang

逐步實施

  • 建立繼承自 Exception 的自訂異常類
  • 建構繼承自通用視圖的 UI 元件(如按鈕)
  • 定義分層資料庫模型(例如使用者、員工、經理)

常見問題解答

super() 在子類化中做什麼?

super() 傳回父類別的臨時對象,讓您可以呼叫其方法,這對於在 __init__ 中初始化父類別欄位特別有用。

你能阻止一個類別被繼承嗎?

Python 不支援像 Java 那樣的「final」關鍵字來限制繼承。按照慣例,我們記錄類別意圖,或使用類型檢查器和來自打字模組的 @final 註釋。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。