婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Python 面向?qū)ο缶幊痰娜筇匦灾^承

Python 面向?qū)ο缶幊痰娜筇匦灾^承

熱門(mén)標(biāo)簽:萊蕪電信外呼系統(tǒng) 企業(yè)微信地圖標(biāo)注 怎么辦理400客服電話 沈陽(yáng)防封電銷(xiāo)電話卡 銀川電話機(jī)器人電話 高德地圖標(biāo)注收入咋樣 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)違法嗎 地圖標(biāo)注多個(gè) B52系統(tǒng)電梯外呼顯示E7

Python  面向?qū)ο缶幊痰娜筇匦灾^承

一、繼承

  • 繼承也是面向?qū)ο缶幊倘筇匦灾?/li>
  • 繼承是類(lèi)與類(lèi)的一種關(guān)系
  • 定義一個(gè)新的 class 時(shí),可以從某個(gè)現(xiàn)有的 class 繼承
  • 新的 class 類(lèi)就叫子類(lèi)(Subclass
  • 被繼承的類(lèi)一般稱(chēng)為父類(lèi)基類(lèi)超類(lèi)
  • 通俗理解:子類(lèi)與父類(lèi)的關(guān)系,即爸爸與兒子,爸爸有了個(gè)兒子,兒子繼承爸爸的屬性和方法,爸爸的爸爸就是爺爺...以此類(lèi)推

1、繼承的實(shí)際栗子

  • 貓、狗都是動(dòng)物,所以動(dòng)物是父類(lèi)貓、狗是動(dòng)物的子類(lèi)
  • 小菠蘿、大菠蘿都是人類(lèi),所以人類(lèi)是父類(lèi),小菠蘿、大菠蘿是人類(lèi)的子類(lèi)
  • 動(dòng)物、人類(lèi)都是生物,所以生物是父類(lèi),動(dòng)物、人類(lèi)是生物的子類(lèi)
  • 那么一般稱(chēng)生物類(lèi)是貓、狗、小菠蘿、大菠蘿的超類(lèi)、祖父類(lèi)

2、繼承的好處

  • 實(shí)現(xiàn)代碼的重用,相同的代碼不需要重復(fù)編寫(xiě)
  • 子類(lèi)擁有父類(lèi)的所有屬性、方法,提高了代碼的可擴(kuò)展性和重用性
  • 在子類(lèi)繼承父類(lèi)的同時(shí),也可以重新定義某些屬性,并重寫(xiě)某些方法,即覆蓋父類(lèi)的屬性、方法,變成子類(lèi)獨(dú)有的屬性、方法
  • 子類(lèi)也可以添加新的屬性、方法

3、繼承的使用場(chǎng)景

  • 假如我需要定義幾個(gè)類(lèi),而類(lèi)與類(lèi)之間有一些公共的屬性和方法
  • 可以把公共的屬性和方法提取作為父類(lèi)(基類(lèi))的屬性、方法,而特殊的屬性、方法則在本類(lèi)中定義
  • 比如貓、狗都有吃喝拉撒四種行為,這些就是公共方法;但只有貓會(huì)喵喵叫,只有狗會(huì)汪汪叫,這些就是特殊方法

具體可以看下面的【不使用繼承、使用繼承的區(qū)別】

4、繼承有幾種?

單繼承
多繼承

5、Python 中繼承的簡(jiǎn)單語(yǔ)法

class Parent:
    pass

class Child(Parent):
    pass

有個(gè)重點(diǎn):

所有類(lèi)的都有一個(gè)共同父類(lèi),就是 object,默認(rèn)會(huì)繼承它,寫(xiě)或不寫(xiě)都一樣

class Parent:
    pass

class Parent(object):
    pass

二、不使用繼承、使用繼承的區(qū)別

1、需求背景

有一個(gè)動(dòng)物類(lèi)、狗類(lèi)、貓類(lèi)

  • 動(dòng)物類(lèi)有吃、喝、跑方法
  • 狗類(lèi)有吃、喝、跑、汪汪叫方法
  • 貓類(lèi)有吃、喝、跑、喵喵叫方法

2、不使用繼承

類(lèi)圖

需求分析

  • 每個(gè)類(lèi)都擁有自己的方法
  • 他們都擁有吃、喝、拉方法,且功能一樣

實(shí)際代碼:

# 不使用繼承
class Animal:
    def eat(self):
        print("吃東西...")

    def drink(self):
        print("喝水...")

    def run(self):
        print("跑步...")


class Cat:
    def eat(self):
        print("吃東西...")

    def drink(self):
        print("喝水...")

    def run(self):
        print("跑步...")

    def miao(self):
        print("喵喵叫...")


class Dog:
    def eat(self):
        print("吃東西...")

    def drink(self):
        print("喝水...")

    def run(self):
        print("跑步...")

    def wang(self):
        print("汪汪叫...")
 

這樣寫(xiě)有什么問(wèn)題?

  • 三個(gè)類(lèi),需要重復(fù)寫(xiě)三次吃、喝、跑的方法
  • 假設(shè)此時(shí)需要修改 吃 方法的代碼,那么還得同步修改三個(gè)類(lèi)的 吃 方法,屬于不必要的重復(fù)性工作
  • 使用繼承可以大大減少開(kāi)發(fā)工作量

2、使用繼承

類(lèi)圖

從類(lèi)圖就能看到,使用繼承就變得簡(jiǎn)單多了

需求分析

  • 提取三個(gè)類(lèi)的公共方法,吃、喝、跑,然后抽象成動(dòng)物類(lèi)
  • 所以動(dòng)物類(lèi)是一個(gè)父類(lèi),狗類(lèi)、貓類(lèi)繼承它

實(shí)際代碼:

# 使用繼承
class Animal:
    def eat(self):
        print("吃東西...")

    def drink(self):
        print("喝水...")

    def run(self):
        print("跑步...")


class Cat(Animal):
    def miao(self):
        print("喵喵叫...")


class Dog(Animal):
    def wang(self):
        print("汪汪叫...")
 

優(yōu)勢(shì):

  • 子類(lèi)繼承父類(lèi),可以直接享受父類(lèi)已經(jīng)封裝好的方法,不再需要自己開(kāi)發(fā)一次
  • 子類(lèi)可以根據(jù)自身的需要,封裝子類(lèi)獨(dú)有的屬性、方法,比如貓類(lèi)的喵喵叫,狗類(lèi)的汪汪叫 

專(zhuān)業(yè)術(shù)語(yǔ)總結(jié)

  • Dog 類(lèi)是 Animale 類(lèi)的子類(lèi),Animal 類(lèi)是 Dog 類(lèi)的父類(lèi),Dog 類(lèi)從 Animal 類(lèi)繼承
  • Dog 類(lèi)是 Animale 類(lèi)的派生類(lèi),Animal 類(lèi)是 Dog 類(lèi)的基類(lèi),Dog 類(lèi)從 Animal 類(lèi)派生

三、繼承的傳遞性

1、什么是傳遞性

通俗來(lái)講

  • C 類(lèi)從 B 類(lèi)繼承,B 類(lèi)又從 A 類(lèi)繼承
  • 那么 C 類(lèi)會(huì)擁有 A、B 類(lèi)的所有屬性和方法 

官方來(lái)講

  • 子類(lèi)擁有父類(lèi)以及父類(lèi)的父類(lèi),以及所有父類(lèi)的父類(lèi)的父類(lèi)...中封裝的所有屬性、方法

實(shí)際栗子:

  • 還是拿上面的動(dòng)物類(lèi)、狗類(lèi)、貓類(lèi)繼續(xù)展開(kāi)講
  • 假設(shè)此時(shí)有一個(gè)新的類(lèi)叫柴犬類(lèi),繼承于狗類(lèi),有獨(dú)有的方法搖尾巴

類(lèi)圖

實(shí)際代碼:

class Animal:
    def eat(self):
        print("吃東西...")

    def drink(self):
        print("喝水...")

    def run(self):
        print("跑步...")


class Cat(Animal):
    def miao(self):
        print("喵喵叫...")


class Dog(Animal):
    def wang(self):
        print("汪汪叫...")


class Chai(Dog):
    def shake(self):
        print("小柴柴搖尾巴...")


chai = Chai()
# 調(diào)用 父類(lèi)的父類(lèi) 的方法
chai.eat()
# 調(diào)用 父類(lèi) 的方法
chai.wang()
# 調(diào)用 自己獨(dú)有 的方法
chai.shake()


# 輸出結(jié)果
吃東西...
汪汪叫...
小柴柴搖尾巴...


  • Chai 類(lèi)擁有 Dog 類(lèi)、Animal 類(lèi)所有屬性、方法
  • 但它不會(huì)擁有 Cat 類(lèi)的屬性、方法,因?yàn)樗麄儧](méi)有繼承關(guān)系

四、繼承和抽象

抽象即抽取類(lèi)似或者說(shuō)比較像的部分

小栗子:

  • 從小菠蘿、小韻韻兩個(gè)對(duì)象中,抽取公共部分抽象成父類(lèi)
  • 再?gòu)娜耍i,狗這三個(gè)類(lèi),抽取公共部分抽象成父類(lèi)

1、繼承的重點(diǎn)

  • 是基于抽象的結(jié)果,通過(guò)編程語(yǔ)言去實(shí)現(xiàn)它
  • 先經(jīng)歷抽象這個(gè)過(guò)程,才能通過(guò)繼承的方式去表達(dá)出抽象的結(jié)構(gòu)
  • 抽象只是分析和設(shè)計(jì)的過(guò)程中,一個(gè)動(dòng)作或者說(shuō)一個(gè)技巧,通過(guò)抽象得到一個(gè)類(lèi)

代碼栗子:

class Animal:
    def __init__(self, name, age, sex):
        self.__name = name
        self.__age = age
        self.__sex = sex

    # 提取的公共方法
    def eat(self):
        print(f"{self.__name} 正在吃飯....")

    @property
    def name(self):
        return self.__name


class Person(Animal):
    def walk(self):
        print(f"{self.name} 兩條腿正在走路")


class Pig(Animal):
    def kill(self):
        print(f"{self.name} 豬正在去屠宰場(chǎng)ing...")


class Dog(Animal):
    def wang(self):
        print(f"{self.name} 汪汪叫ing...")


person = Person("小菠蘿", 25, "Male")
pig = Pig("麥兜", 4, "公")
dog = Dog("柴犬", 3, "母")

# 調(diào)用父類(lèi)的公共方法
person.eat()
pig.eat()
dog.eat()

# 調(diào)用子類(lèi)獨(dú)有的方法
person.walk()
pig.kill()
dog.wang()

 

# 輸出結(jié)果
小菠蘿 正在吃飯....
麥兜 正在吃飯....
柴犬 正在吃飯....

小菠蘿 兩條腿正在走路
麥兜 豬正在去屠宰場(chǎng)ing...
柴犬 汪汪叫ing...

以上就是Python  面向?qū)ο缶幊痰娜筇匦灾^承的詳細(xì)內(nèi)容,更多關(guān)于Python  面向?qū)ο缶幊痰睦^承的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python中關(guān)于面向?qū)ο蟾拍畹脑敿?xì)講解
  • Python 多繼承中的一個(gè)詭異現(xiàn)象 既是 Father又是grandfather
  • python接口,繼承,重載運(yùn)算符詳解
  • python面向?qū)ο笾?lèi)的繼承詳解
  • Python中關(guān)于面向?qū)ο笾欣^承的詳細(xì)講解

標(biāo)簽:烏魯木齊 安慶 呼倫貝爾 湘西 葫蘆島 呼倫貝爾 銀川 三亞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python 面向?qū)ο缶幊痰娜筇匦灾^承》,本文關(guān)鍵詞  Python,面向,對(duì)象,編程,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python 面向?qū)ο缶幊痰娜筇匦灾^承》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python 面向?qū)ο缶幊痰娜筇匦灾^承的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 平利县| 图们市| 连州市| 沾化县| 武山县| 佛坪县| 勃利县| 顺义区| 德格县| 惠东县| 呼伦贝尔市| 襄城县| 吉水县| 固安县| 丰宁| 曲松县| 会东县| 安平县| 新宁县| 苏尼特左旗| 兴义市| 襄垣县| 安乡县| 洛阳市| 梅州市| 临高县| 阜阳市| 绥宁县| 新安县| 东阿县| 广州市| 叙永县| 甘南县| 和龙市| 南通市| 专栏| 夏津县| 都昌县| 灵璧县| 临城县| 册亨县|