選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP How to W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Python 教程

Python 主頁 Python 簡介 Python 入門 Python 語法 Python 註釋 Python 變數 Python 資料型別 Python 數字 Python 型別轉換 Python 字串 Python 布林值 Python 運算子 Python 列表 Python 元組 Python 集合 Python 字典 Python If...Else Python While 迴圈 Python For 迴圈 Python 函式 Python Lambda Python 陣列 Python 類/物件 Python 繼承 Python 迭代器 Python 多型 Python 作用域 Python 模組 Python 日期 Python 數學 Python JSON Python 正則表示式 Python PIP Python Try...Except Python 使用者輸入 Python 字串格式化

檔案處理

Python 檔案處理 Python 讀取檔案 Python 寫入/建立檔案 Python 刪除檔案

Python 模組

NumPy 教程 Pandas 教程 SciPy 教程 Django 教程

Python Matplotlib

Matplotlib 簡介 Matplotlib 入門 Matplotlib Pyplot Matplotlib 繪圖 Matplotlib 標記 Matplotlib 線條 Matplotlib 標籤 Matplotlib 網格 Matplotlib 子圖 Matplotlib 散點圖 Matplotlib 條形圖 Matplotlib 直方圖 Matplotlib 餅圖

機器學習

入門 均值、中位數、眾數 標準差 百分位數 資料分佈 正態資料分佈 散點圖 線性迴歸 多項式迴歸 多元迴歸 縮放 訓練/測試 決策樹 混淆矩陣 層次聚類 邏輯迴歸 網格搜尋 分類資料 K-means Bootstrap Aggregation 交叉驗證 AUC - ROC 曲線 K-近鄰

Python MySQL

MySQL 入門 MySQL 建立資料庫 MySQL 建立表 MySQL 插入 MySQL 選擇 MySQL Where MySQL Order By MySQL 刪除 MySQL 刪除表 MySQL 更新 MySQL Limit MySQL Join

Python MongoDB

MongoDB 入門 MongoDB 建立資料庫 MongoDB 集合 MongoDB 插入 MongoDB Find MongoDB Query MongoDB Sort MongoDB 刪除 MongoDB 刪除集合 MongoDB 更新 MongoDB Limit

Python 參考

Python 概述 Python 內建函式 Python 字串方法 Python 列表方法 Python 字典方法 Python 元組方法 Python 集合方法 Python 檔案方法 Python 關鍵字 Python 異常 Python 詞彙表

模組參考

Random 模組 Requests 模組 Statistics 模組 Math 模組 cMath 模組

Python 如何操作

刪除列表重複項 反轉字串 兩個數字相加

Python 示例

Python 示例 Python 編譯器 Python 練習 Python 測驗 Python 伺服器 Python 面試問答 Python 訓練營 Python 證書

Python 繼承


Python 繼承

繼承允許我們定義一個類,該類繼承另一個類的所有方法和屬性。

父類 是被繼承的類,也稱為基類。

子類 是繼承自另一個類的類,也稱為派生類。


建立父類

任何類都可以是父類,所以語法與建立任何其他類相同

示例

建立一個名為 Person 的類,它具有 firstnamelastname 屬性,以及一個 printname 方法

class Person
  def __init__(self, fname, lname)
    self.firstname = fname
    self.lastname = lname

  def printname(self)
    print(self.firstname, self.lastname)

#使用 Person 類建立一個物件,然後執行 printname 方法

x = Person("John", "Doe")
x.printname()
自己動手試一試 »

建立子類

要建立一個繼承另一個類功能的類,請在建立子類時將父類作為引數傳遞

示例

建立一個名為 Student 的類,它將繼承 Person 類的屬性和方法

class Student(Person)
  pass

注意: 當您不想向類新增任何其他屬性或方法時,請使用 pass 關鍵字。

現在 Student 類擁有與 Person 類相同的屬性和方法。

示例

使用 Student 類建立一個物件,然後執行 printname 方法

x = Student("Mike", "Olsen")
x.printname()
自己動手試一試 »


新增 __init__() 函式

到目前為止,我們已經建立了一個繼承了其父類屬性和方法的子類。

我們想在子類中新增 __init__() 函式(而不是 pass 關鍵字)。

注意: 每次使用類建立新物件時,__init__() 函式都會自動呼叫。

示例

__init__() 函式新增到 Student 類中

class Student(Person)
  def __init__(self, fname, lname)
    #新增屬性等。

當您新增 __init__() 函式時,子類將不再繼承父類的 __init__() 函式。

注意: 子類的 __init__() 函式將覆蓋父類的 __init__() 函式的繼承。

要保留父類 __init__() 函式的繼承,請新增一個對父類 __init__() 函式的呼叫

示例

class Student(Person)
  def __init__(self, fname, lname)
    Person.__init__(self, fname, lname)
自己動手試一試 »

現在我們已成功添加了 __init__() 函式,並保留了父類的繼承,我們可以準備在 __init__() 函式中新增功能了。


使用 super() 函式

Python 還有一個 super() 函式,它將使子類繼承其父類的所有方法和屬性

示例

class Student(Person)
  def __init__(self, fname, lname)
    super().__init__(fname, lname)
自己動手試一試 »

透過使用 super() 函式,您不必使用父元素的名稱,它將自動繼承其父類的方法和屬性。


新增屬性

示例

graduationyear 屬性新增到 Student 類中

class Student(Person)
  def __init__(self, fname, lname)
    super().__init__(fname, lname)
    self.graduationyear = 2019
自己動手試一試 »

在下面的示例中,年份 2019 應該是一個變數,並在建立學生物件時傳遞給 Student 類。為此,請在 __init__() 函式中新增另一個引數

示例

新增一個 year 引數,並在建立物件時傳遞正確的年份

class Student(Person)
  def __init__(self, fname, lname, year)
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)
自己動手試一試 »

新增方法

示例

將一個名為 welcome 的方法新增到 Student 類中

class Student(Person)
  def __init__(self, fname, lname, year)
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self)
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
自己動手試一試 »

如果您在子類中添加了一個與父類中的函式同名的方法,則父類方法的繼承將被覆蓋。



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援