日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Python中的繼承

我們經(jīng)常遇到不同的產(chǎn)品,它們有一個(gè)基本模型和一個(gè)高級(jí)模型,在基本模型的基礎(chǔ)上增加了一些功能。面向?qū)ο蟮能浖7椒軌驍U(kuò)展現(xiàn)有類的能力來構(gòu)建新的類,而不是從頭開始構(gòu)建。在 OOP 術(shù)語中,這種特性被稱為繼承,現(xiàn)有的類被稱為基類或父類,而新的類被稱為子類或子類。

當(dāng)一個(gè)新的類與一個(gè)現(xiàn)有的類具有“是”的關(guān)系時(shí),繼承就出現(xiàn)了。

狗是一種動(dòng)物。貓也是一種動(dòng)物。因此,動(dòng)物是基類,而狗和貓是繼承類。

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

子類從父類繼承數(shù)據(jù)定義和方法。這有助于重用已有的功能。子類可以添加一些定義或者重新定義一個(gè)基類方法。

這個(gè)特性在為系統(tǒng)中的對(duì)象構(gòu)建類的層次結(jié)構(gòu)時(shí)非常有用。也可以基于一個(gè)以上的現(xiàn)有類設(shè)計(jì)一個(gè)新類。這個(gè)特性叫做多重繼承。

建立繼承的一般機(jī)制如下所示:

Syntax:

class parent:
    statements

class child(parent):
    statements

定義子類時(shí),父類的名稱放在它前面的括號(hào)中,表示兩者之間的關(guān)系。父類中定義的實(shí)例屬性和方法將被子類的對(duì)象繼承。

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

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

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) 

構(gòu)造器(__init__()方法)接收四個(gè)參數(shù),并將它們分配給四個(gè)實(shí)例變量。要測(cè)試上述類,請(qǐng)聲明其對(duì)象并調(diào)用perimeter()方法。

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

我們現(xiàn)在基于quadriLateral類設(shè)計(jì)一個(gè)矩形類(矩形是四邊形!).實(shí)例變量和基類中的perimeter()方法應(yīng)該自動(dòng)對(duì)其可用,而無需重新定義。

由于矩形的相對(duì)邊是相同的,我們只需要兩個(gè)相鄰的邊來構(gòu)造它的對(duì)象。因此,__init__()方法的另外兩個(gè)參數(shù)被設(shè)置為無。 方法使用 super() 函數(shù)將參數(shù)轉(zhuǎn)發(fā)給其基(四邊形)類的構(gòu)造器。 對(duì)象初始化時(shí)將side3side4設(shè)置為無。 矩形類的構(gòu)造器使對(duì)邊相等。請(qǐng)記住,它已經(jīng)自動(dòng)繼承了perimeter()方法,因此沒有必要重新定義它。

Example: Inheritance

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

我們現(xiàn)在可以聲明矩形類的對(duì)象并調(diào)用perimeter()方法。

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

在 Python 中重寫

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

父類的方法可用于繼承的類。但是,如果需要,我們可以修改任何基類方法的功能。為此,繼承的類包含方法的新定義(與基類中已經(jīng)存在的名稱和簽名相同)。很自然,一個(gè)新類的對(duì)象可以訪問這兩種方法,但是當(dāng)被調(diào)用時(shí),來自它自己的類的對(duì)象將具有優(yōu)先權(quán)。這稱為方法重寫。

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

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()方法被覆蓋,以實(shí)現(xiàn)將正方形面積作為其邊的正方形的公式。

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
```****

文章標(biāo)題:Python中的繼承
文章起源:http://www.dlmjj.cn/article/coggjjh.html