Python 中的繼承

我們經常遇到不同的產品,它們有一個基本模型和一個高級模型,在基本模型的基礎上增加了一些功能。面向對象的軟件建模方法能夠擴展現有類的能力來構建新的類,而不是從頭開始構建。在 OOP 術語中,這種特性被稱為繼承,現有的類被稱為基類或父類,而新的類被稱為子類或子類。

當一個新的類與一個現有的類具有「是」的關係時,繼承就出現了。

狗是一種動物。貓也是一種動物。因此,動物是基類,而狗和貓是繼承類。

四邊形有四條邊。矩形是四邊形,正方形也是四邊形。四邊形是基類(也稱為父類),而矩形和正方形是繼承的類——也稱為子類。

子類從父類繼承數據定義和方法。這有助於重用已有的功能。子類可以添加一些定義或者重新定義一個基類方法。

這個特性在為系統中的對象構建類的層次結構時非常有用。也可以基於一個以上的現有類設計一個新類。這個特性叫做多重繼承。

建立繼承的一般機制如下所示:

Syntax:

class parent:
    statements

class child(parent):
    statements

定義子類時,父類的名稱放在它前面的括號中,表示兩者之間的關係。父類中定義的實例屬性和方法將被子類的對象繼承。

為了演示一個更有意義的例子,首先定義一個四邊形類,並將其用作矩形類的基類。

具有四條邊作為實例變量和周長()方法的四邊形類定義如下:

Example:

class quadriLateral:
    def __init__(self, a, b, c, d):
        self.side1=a
        self.side2=b
        self.side3=c
        self.side4=d

    def perimeter(self):
        p=self.side1 + self.side2 + self.side3 + self.side4
        print("perimeter=",p) 

構造器(__init__()方法)接收四個參數,並將它們分配給四個實例變量。要測試上述類,請聲明其對象並調用perimeter()方法。

>>>q1=quadriLateral(7,5,6,4)
>>>q1.perimeter()
perimeter=22

我們現在基於quadriLateral類設計一個矩形類(矩形是四邊形!).實例變量和基類中的perimeter()方法應該自動對其可用,而無需重新定義。

由於矩形的相對邊是相同的,我們只需要兩個相鄰的邊來構造它的對象。因此,__init__()方法的另外兩個參數被設置為無。 方法使用 super() 函數將參數轉發給其基(四邊形)類的構造器。 對象初始化時將side3side4設置為無。 矩形類的構造器使對邊相等。請記住,它已經自動繼承了perimeter()方法,因此沒有必要重新定義它。

Example: Inheritance

class rectangle(quadriLateral):
    def __init__(self, a, b):
        super().__init__(a, b, a, b) 

我們現在可以聲明矩形類的對象並調用perimeter()方法。

>>> r1=rectangle(10, 20)
>>> r1.perimeter()
perimeter=60

在 Python 中重寫

在上面的例子中,我們看到了如何在構造繼承類時重用基類的資源。但是,繼承的類可以有自己的實例屬性和方法。

父類的方法可用於繼承的類。但是,如果需要,我們可以修改任何基類方法的功能。為此,繼承的類包含方法的新定義(與基類中已經存在的名稱和簽名相同)。很自然,一個新類的對象可以訪問這兩種方法,但是當被調用時,來自它自己的類的對象將具有優先權。這稱為方法重寫。

首先,我們將在矩形類中定義一個名為area()的新方法,並將其用作square類的基礎。矩形的面積是其相鄰邊的乘積。

Example:

class rectangle(QuadriLateral):
    def __init__(self, a,b):
        super().__init__(a, b, a, b)

    def area(self):
        a = self.side1 * self.side2
        print("area of rectangle=", a) 

讓我們定義繼承矩形類的正方形類。area()方法被覆蓋,以實現將正方形面積作為其邊的正方形的公式。

Example:

class square(rectangle):
    def __init__(self, a):
        super().__init__(a, a)
    def area(self):
        a=pow(self.side1, 2)
        print('Area of Square: ', a) 

>>>s=Square(10)
>>>s.area()
Area of Square: 100
```****

原創文章,作者:DYZZE,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/129166.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
DYZZE的頭像DYZZE
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python編程二級證書考試相關現已可以上網購買

    計算機二級Python考試是一項重要的國家級認證考試,也是Python編程的入門考試。與其他考試一樣,Python編程二級證書的考生需要進入正式考試,而為了備考,這篇文章將詳細介紹…

    編程 2025-04-29

發表回復

登錄後才能評論