1. <source id="nejs2"></source>
  2. <video id="nejs2"></video>
    <source id="nejs2"></source>
          1. 首頁 > Python 教程 > Python 面向對象 > Python 中的繼承

            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
            ```****
            文章目錄
            在 Python 中重寫
            頂部 久久久久99精品成人片毛片_黃色A片三級三級三級无码_日本不卡高清视频v中文字幕_高清欧美视频一区二区
            1. <source id="nejs2"></source>
            2. <video id="nejs2"></video>
              <source id="nejs2"></source>