五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2022-01-30 13:35 | 文章來源:站長之家

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

一、繼承

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

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

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

2、繼承的好處

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

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

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

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

4、繼承有幾種?

單繼承
多繼承

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

class Parent:
 pass
class Child(Parent):
 pass

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

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

class Parent:
 pass
class Parent(object):
 pass

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

1、需求背景

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

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

2、不使用繼承

類圖

需求分析

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

實(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("汪汪叫...")
 

這樣寫有什么問題?

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

2、使用繼承

類圖

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

需求分析

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

實(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ì):

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

專業(yè)術(shù)語總結(jié)

  • Dog 類是 Animale 類的子類,Animal 類是 Dog 類的父類,Dog 類從 Animal 類繼承
  • Dog 類是 Animale 類的派生類,Animal 類是 Dog 類的基類,Dog 類從 Animal 類派生

三、繼承的傳遞性

1、什么是傳遞性

通俗來講

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

官方來講

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

實(shí)際栗子:

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

類圖

實(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)用 父類的父類 的方法
chai.eat()
# 調(diào)用 父類 的方法
chai.wang()
# 調(diào)用 自己獨(dú)有 的方法
chai.shake()

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

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

四、繼承和抽象

抽象即抽取類似或者說比較像的部分

小栗子:

  • 從小菠蘿、小韻韻兩個(gè)對(duì)象中,抽取公共部分抽象成父類
  • 再從人,豬,狗這三個(gè)類,抽取公共部分抽象成父類

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

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

代碼栗子:

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)用父類的公共方法
person.eat()
pig.eat()
dog.eat()
# 調(diào)用子類獨(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)文章!希望大家以后多多支持本站!

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部