Python程序開發(fā)案例教程(第2版)課件 第7章 類與面向?qū)ο骭第1頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第7章 類與面向?qū)ο骭第2頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第7章 類與面向?qū)ο骭第3頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第7章 類與面向?qū)ο骭第4頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第7章 類與面向?qū)ο骭第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章類與面向?qū)ο蟆禤ython程序開發(fā)案例教程(第2版))》學(xué)習(xí)目標(biāo)/Target了解面向?qū)ο蟮乃枷?,能夠說(shuō)出面向?qū)ο笈c面向過(guò)程的區(qū)別熟悉面向?qū)ο蟮幕靖拍睿軌驓w納封裝、繼承和多態(tài)的概念熟悉類和對(duì)象的關(guān)系,能夠歸納類和對(duì)象之間的關(guān)系掌握類的定義,能夠通過(guò)關(guān)鍵字class定義類學(xué)習(xí)目標(biāo)/Target掌握對(duì)象的創(chuàng)建與使用,能夠使用對(duì)象訪問(wèn)屬性或調(diào)用方法掌握訪問(wèn)限制,能夠通過(guò)私有成員來(lái)限制類外部對(duì)成員的訪問(wèn)掌握構(gòu)造方法的使用,能夠在構(gòu)造方法中定義實(shí)例屬性掌握類方法和靜態(tài)方法的定義,能夠在類中定義類方法和靜態(tài)方法并使用學(xué)習(xí)目標(biāo)/Target掌握單繼承、多繼承的語(yǔ)法,能夠在類中實(shí)現(xiàn)單繼承和多繼承掌握方法重寫的方式,能夠在子類中重寫從父類繼承的方法掌握super()函數(shù)的使用,能夠通過(guò)super()函數(shù)調(diào)用父類被重寫的方法悉多態(tài)的特性,能夠在程序中以多態(tài)的形式調(diào)用類中定義的方法章節(jié)概述/Summary面向?qū)ο笫怯?jì)算機(jī)軟件開發(fā)中的重要思想,它模擬了人類對(duì)現(xiàn)實(shí)世界的認(rèn)知邏輯,被廣泛應(yīng)用于軟件工程領(lǐng)域。類是面向?qū)ο缶幊痰暮诵母拍钪?,它在Python中也是一種重要的編程手段。由于Python最初就是作為一門面向?qū)ο蟮恼Z(yǔ)言設(shè)計(jì)的,因此掌握面向?qū)ο缶幊虒?duì)于學(xué)習(xí)Python至關(guān)重要。本章將針對(duì)面向?qū)ο蟮戎R(shí)進(jìn)行詳細(xì)介紹。目錄/Contents010203面向?qū)ο箢惻c對(duì)象構(gòu)造方法04類方法和靜態(tài)方法目錄/Contents050607實(shí)例1:航天器信息查詢工具繼承實(shí)例2:人機(jī)猜拳游戲08多態(tài)面向?qū)ο?.1

先定一個(gè)小目標(biāo)!了解面向?qū)ο蟮乃枷?,能夠說(shuō)出面向?qū)ο笈c面向過(guò)程的區(qū)別7.1.1面向?qū)ο蟾攀雒嫦驅(qū)ο蟾攀雒嫦驅(qū)ο螅∣bject-Oriented)是一種軟件開發(fā)的編程范式和方法論,通過(guò)將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作組織為一個(gè)整體,從更高的層次進(jìn)行軟件建模,使得軟件的設(shè)計(jì)更加貼近事物的自然運(yùn)行模式。7.1.1面向?qū)ο蟾攀雒嫦驅(qū)ο蟾攀?.1.1面向?qū)ο蟾攀雒嫦蜻^(guò)程編程會(huì)將問(wèn)題分解為一系列的步驟,然后使用函數(shù)來(lái)實(shí)現(xiàn)每個(gè)步驟對(duì)應(yīng)的功能,按照步驟的順序依次調(diào)用函數(shù)。面向過(guò)程的編程方式主要關(guān)注解決當(dāng)前問(wèn)題,更加注重問(wèn)題本身。面向過(guò)程編程面向?qū)ο缶幊趟枷虢鉀Q問(wèn)題時(shí),開發(fā)人員首先會(huì)從問(wèn)題中識(shí)別出涉及的對(duì)象,然后將每個(gè)對(duì)象的特征和行為進(jìn)行封裝。面向?qū)ο缶幊痰暮诵氖菍?duì)象,通過(guò)描述對(duì)象的行為來(lái)描述解決問(wèn)題的過(guò)程。面向?qū)ο缶幊?.1.1面向?qū)ο蟾攀雒嫦驅(qū)ο蟾攀龇诸愅婕移灞P規(guī)則系統(tǒng)特征棋子(黑或白子)棋盤數(shù)據(jù)無(wú)

行為落子顯示棋盤、更新棋盤判定輸贏五子棋游戲(面向過(guò)程編程)五子棋游戲(面向?qū)ο缶幊蹋┟嫦驅(qū)ο缶幊瘫WC了功能的統(tǒng)一性,基于面向?qū)ο缶幊虒?shí)現(xiàn)的程序更容易維護(hù)。

先定一個(gè)小目標(biāo)!7.1.2面向?qū)ο蟮幕靖拍钍煜っ嫦驅(qū)ο蟮幕靖拍?,能夠歸納封裝、繼承和多態(tài)的概念對(duì)象繼承對(duì)象是現(xiàn)實(shí)世界中可描述的事物,它可以是有形的也可以是無(wú)形的,從一本書到一家圖書館,從簡(jiǎn)單的整數(shù)到復(fù)雜的列表都可以稱為對(duì)象。對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位,它由數(shù)據(jù)和作用于數(shù)據(jù)的操作構(gòu)成一個(gè)獨(dú)立整體。對(duì)象既可以是具體的物理實(shí)體的對(duì)象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。抽象封裝類7.1.2面向?qū)ο蟮幕靖拍疃鄳B(tài)面向?qū)ο蟮幕靖拍顚?duì)象繼承俗話說(shuō)“物以類聚”,從具體的事物中把共同的特征抽取出來(lái),形成一般的概念稱為“歸類”,忽略事物的非本質(zhì)特牲,關(guān)注與目標(biāo)有關(guān)的本質(zhì)特征,找出事物間的共性,抽象出一個(gè)概念模型,就是定義一個(gè)類。在面向?qū)ο蟮姆椒ㄖ?,類是具有相同屬性和行為的一組對(duì)象的集合,它提供一個(gè)抽象的描述,其內(nèi)部包括屬性和方法兩個(gè)主要部分,它就像一個(gè)模具,可以用它鑄造一個(gè)個(gè)具體的鑄件。抽象封裝類7.1.2面向?qū)ο蟮幕靖拍疃鄳B(tài)面向?qū)ο蟮幕靖拍顚?duì)象繼承抽象是抽取特定實(shí)例的共同特征,形成概念的過(guò)程,例如蘋果、香蕉、梨、葡萄等,抽取出它們共同特性就得出“水果”這一類,那么得出水果概念的過(guò)程,就是一個(gè)抽象的過(guò)程。抽象主要是為了使復(fù)雜度降低,它強(qiáng)調(diào)主要特征,忽略次要特征,以得到較簡(jiǎn)單的概念,好讓人們能控制其過(guò)程或以綜合的角度來(lái)了解許多特定的事態(tài)。抽象封裝類7.1.2面向?qū)ο蟮幕靖拍疃鄳B(tài)面向?qū)ο蟮幕靖拍顚?duì)象繼承封裝是面向?qū)ο蟪绦蛟O(shè)計(jì)最重要的特征之一。封裝的核心是隱藏,它將數(shù)據(jù)和數(shù)據(jù)處理過(guò)程封裝成一個(gè)整體,以實(shí)現(xiàn)獨(dú)立性很強(qiáng)的模塊,避免了外界直接訪問(wèn)對(duì)象屬性而造成耦合度過(guò)高及過(guò)度依賴,同時(shí)也阻止了外界對(duì)對(duì)象內(nèi)部數(shù)據(jù)的修改而可能引發(fā)的不可預(yù)知錯(cuò)誤。封裝是面向?qū)ο蟮暮诵乃枷?,將?duì)象的屬性和行為封裝起來(lái),不需要讓外界知道具體實(shí)現(xiàn)細(xì)節(jié),這就是封裝思想。抽象封裝類7.1.2面向?qū)ο蟮幕靖拍疃鄳B(tài)面向?qū)ο蟮幕靖拍顚?duì)象繼承繼承描述的是類與類之間的關(guān)系,通過(guò)繼承,新生類可以在無(wú)需贅寫原有類的情況下,對(duì)原有類的功能進(jìn)行擴(kuò)展。繼承不僅增強(qiáng)了代碼復(fù)用性,提高了開發(fā)效率,也為程序的擴(kuò)充提供了便利。在軟件開發(fā)中,類的繼承性使所建立的軟件具有開放性、可擴(kuò)充性,這是數(shù)據(jù)組織和分類行之有效的方法,它減少了創(chuàng)建對(duì)象、類的工作量。抽象封裝類7.1.2面向?qū)ο蟮幕靖拍疃鄳B(tài)面向?qū)ο蟮幕靖拍顚?duì)象繼承多態(tài)指同一個(gè)屬性或行為在父類及其各派生類中具有不同的語(yǔ)義,面向?qū)ο蟮亩鄳B(tài)特性使得開發(fā)更科學(xué)、更符合人類的思維習(xí)慣,能有效地提高軟件開發(fā)效率,縮短開發(fā)周期,提高軟件可靠性。抽象封裝類7.1.2面向?qū)ο蟮幕靖拍疃鄳B(tài)面向?qū)ο蟮幕靖拍铑惻c對(duì)象7.2

先定一個(gè)小目標(biāo)!熟悉類和對(duì)象的關(guān)系,能夠歸納類和對(duì)象之間的關(guān)系7.2.1類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系面向?qū)ο缶幊趟枷肓η笤诔绦蛑袑?duì)事物的描述與該事物在現(xiàn)實(shí)中的形態(tài)保持一致。為此,面向?qū)ο蟮乃枷胫刑岢隽藘蓚€(gè)概念,分別是類和對(duì)象。類是對(duì)多個(gè)對(duì)象共同特征的抽象描述,是對(duì)象的模板;對(duì)象用于描述現(xiàn)實(shí)中的個(gè)體,它是類的實(shí)例。7.2.1類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系7.2.1類和對(duì)象的關(guān)系汽車是人類出行所使用的交通工具之一,廠商在生產(chǎn)汽車之前會(huì)先分析用戶需求,設(shè)計(jì)汽車模型,制作設(shè)計(jì)圖紙。設(shè)計(jì)圖紙描述了汽車的各種屬性與功能,比如汽車應(yīng)該有方向盤、發(fā)動(dòng)機(jī)、加速器等功能部件,也應(yīng)能執(zhí)行開車、剎車、加速、倒車等功能。

先定一個(gè)小目標(biāo)!掌握類的定義,能夠通過(guò)關(guān)鍵字class定義類7.2.2類的定義類的定義在程序中創(chuàng)建對(duì)象之前需先定義類。類是對(duì)象的模板,它用于描述一組對(duì)象的共同特征和行為。類中可以定義數(shù)據(jù)成員和成員函數(shù),數(shù)據(jù)成員用于描述對(duì)象特征,成員函數(shù)用于描述對(duì)象行為,其中數(shù)據(jù)成員也被稱為屬性,成員函數(shù)也被稱為方法。7.2.2類的定義類的定義7.2.2類的定義Python中使用關(guān)鍵字class來(lái)定義一個(gè)類。classCar:wheels=4 #屬性defdrive(self): #方法drive()print('開車方式')defstop(self): #方法stop()

print('停車方式')class類名:

屬性名=屬性值

def方法名(self):方法體語(yǔ)法格式

先定一個(gè)小目標(biāo)!掌握對(duì)象的創(chuàng)建與使用,能夠使用對(duì)象訪問(wèn)屬性或調(diào)用方法7.2.3對(duì)象的創(chuàng)建與使用對(duì)象的創(chuàng)建與使用7.2.3對(duì)象的創(chuàng)建與使用類定義完成后不能直接使用。這就好比畫好了一張房屋設(shè)計(jì)圖紙,此圖紙只能幫助人們了解房屋的結(jié)構(gòu),但不能提供居住場(chǎng)所。為滿足人們的居住需求,需要根據(jù)房屋設(shè)計(jì)圖紙搭建實(shí)際的房屋。同理,程序中的類需要實(shí)例化為對(duì)象才能實(shí)現(xiàn)其意義。7.2.3對(duì)象的創(chuàng)建與使用(1)對(duì)象的創(chuàng)建my_car=Car()對(duì)象名=類名()語(yǔ)法格式(2)訪問(wèn)對(duì)象成員print(my_car.wheels)my_car.drive()my_car.stop()對(duì)象名.屬性名對(duì)象名.方法名(參數(shù)1,參數(shù)2,...)

語(yǔ)法格式對(duì)象的創(chuàng)建與使用

先定一個(gè)小目標(biāo)!7.2.4訪問(wèn)限制掌握訪問(wèn)限制,能夠通過(guò)私有成員來(lái)限制類外部對(duì)成員的訪問(wèn)訪問(wèn)限制類中定義的屬性和方法默認(rèn)為公有屬性和公有方法,這意味著類外部的代碼可以自由地訪問(wèn)或調(diào)用這些屬性和方法。然而,這種方式違反了封裝思想的初衷,并可能導(dǎo)致屬性的安全性問(wèn)題。為此Python可以將公有成員設(shè)置為私有成員,這在一定程度上能夠限制類外部對(duì)成員的訪問(wèn)或調(diào)用。7.2.4訪問(wèn)限制7.2.4訪問(wèn)限制(1)定義私有成員classPersonInfo:__weight=55#定義私有屬性def__info(self):#定義私有方法__屬性名__方法名語(yǔ)法格式(2)使用私有成員person=PersonInfo()person.__weight#直接訪問(wèn)會(huì)出現(xiàn)AttributeErrorperson.__info()實(shí)例對(duì)象=類()#在類外部訪問(wèn)私有屬性類.__屬性名/方法名()語(yǔ)法格式訪問(wèn)限制程序在類外部無(wú)法直接訪問(wèn)私有屬性或私有方法。不過(guò),我們可以先在類內(nèi)部的公有方法中通過(guò)關(guān)鍵字self訪問(wèn)私有屬性,再在類外部調(diào)用公有方法來(lái)間接獲取私有屬性。7.2.4訪問(wèn)限制訪問(wèn)限制classPersonInfo:__weight=55#定義私有屬性def__info(self):#定義私有方法print(f'我的體重是{self.__weight}kg')defget_weight(self):print(f'我的體重是{self.__weight}kg')#在類內(nèi)部訪問(wèn)私有屬性self.__info()#在類內(nèi)部調(diào)用私有方法構(gòu)造方法7.3

先定一個(gè)小目標(biāo)!掌握構(gòu)造方法的使用,能夠在構(gòu)造方法中定義實(shí)例屬性7.3構(gòu)造方法構(gòu)造方法構(gòu)造方法即__init__()方法,該方法負(fù)責(zé)在創(chuàng)建對(duì)象時(shí)進(jìn)行初始化操作,比如給屬性賦初始值等。每個(gè)類中默認(rèn)都有一個(gè)的__init__()方法,如果在定義類時(shí)顯式地定義了__init__()方法,則創(chuàng)建對(duì)象時(shí)Python解釋器會(huì)調(diào)用顯式定義的__init__()方法;如果定義類時(shí)沒(méi)有顯式定義__init__()方法,那么Python解釋器會(huì)調(diào)用默認(rèn)的__init__()方法。7.3構(gòu)造方法無(wú)參構(gòu)造方法有參構(gòu)造方法classMyClass:def__init__(self):="Default"defprint_name(self):print("Name:",)無(wú)參構(gòu)造方法中可以為屬性設(shè)置初始值,此時(shí)使用該構(gòu)造方法創(chuàng)建的所有對(duì)象都具有相同的初始值。classPerson(object):def__init__(self,name,sex):=nameself.sex=sexdefintroduce(self):print(f'姓名:{}')print(f'性別:{self.sex}')若希望每次創(chuàng)建的對(duì)象都有不同的初始值,則可以使用有參構(gòu)造方法實(shí)現(xiàn),在有參構(gòu)造方法中將參數(shù)賦值給屬性。構(gòu)造方法7.3構(gòu)造方法類方法和靜態(tài)方法7.4

先定一個(gè)小目標(biāo)!掌握類方法的定義,能夠在類中定義類方法并使用7.4.1類方法類方法類方法與實(shí)例方法有以下幾點(diǎn)區(qū)別:(1)類方法使用裝飾器@classmethod修飾;(2)類方法的第一個(gè)參數(shù)為cls而非self,它代表類本身;(3)類方法既可由對(duì)象調(diào)用,亦可直接由類調(diào)用;(4)類方法可以修改類屬性,實(shí)例方法無(wú)法修改類屬性。7.4.1類方法1.定義類方法7.4.1類方法classTest:@classmethod#定義類方法defuse_classmet(cls):print("我是類方法")示例@classmethoddef類方法名(cls,參數(shù)1,參數(shù)2,...):

方法體語(yǔ)法格式類方法是定義在類內(nèi)部、使用裝飾器@classmethod修飾的方法。2.調(diào)用類方法7.4.1類方法test=Test()#通過(guò)對(duì)象名調(diào)用類方法test.use_classmet()#通過(guò)類名調(diào)用類方法Test.use_classmet()示例類名.類方法名(參數(shù)1,參數(shù)2,...)對(duì)象名.類方法名(參數(shù)1,參數(shù)2,...)語(yǔ)法格式類方法可以通過(guò)類名或?qū)ο竺M(jìn)行調(diào)用,其語(yǔ)法格式如下:3.修改類屬性7.4.1類方法classApple(object):count=0#定義類屬性@classmethoddefadd_two(cls):cls.count=2#在類方法中修改類屬性的值apple=Apple()print(Apple.count)Apple.add_two()print(Apple.count)示例在類方法中,可以通過(guò)參數(shù)cls訪問(wèn)或修改類屬性的值。例如,定義一個(gè)Apple類,該類中包含一個(gè)類屬性和一個(gè)類方法,在類方法中修改類屬性的值,示例代碼如下。

先定一個(gè)小目標(biāo)!掌握靜態(tài)方法的定義,能夠在類中定義靜態(tài)方法并使用7.4.2靜態(tài)方法靜態(tài)方法靜態(tài)方法與實(shí)例方法有以下不同:(1)靜態(tài)方法沒(méi)有self參數(shù),它需要使用裝飾器@staticmethod修飾;(2)靜態(tài)方法中需要以“類名.方法/屬性名”的形式訪問(wèn)類的成員;(3)靜態(tài)方法即可由對(duì)象調(diào)用,亦可直接由類調(diào)用。7.4.2靜態(tài)方法靜態(tài)方法classExample:num=10#類屬性@staticmethod#定義靜態(tài)方法defstatic_method():print(f"類屬性的值為:{Example.num}")print("---靜態(tài)方法")example=Example()#創(chuàng)建對(duì)象example.static_method()#通過(guò)對(duì)象名調(diào)用靜態(tài)方法Example.static_method()#通過(guò)類名調(diào)用靜態(tài)方法示例定義一個(gè)包含屬性num與靜態(tài)方法static_method()的類Example,示例代碼如下。7.4.2靜態(tài)方法類方法和靜態(tài)方法的區(qū)別腳下留心:類方法和靜態(tài)方法的區(qū)別類方法和靜態(tài)方法最主要的區(qū)別在于類方法有一個(gè)cls參數(shù),使用該參數(shù)可以在類方法中訪問(wèn)類的成員;靜態(tài)方法沒(méi)有任何默認(rèn)參數(shù)(如cls),它無(wú)法使用默認(rèn)參數(shù)訪問(wèn)類的成員。因此,靜態(tài)方法更適合與類無(wú)關(guān)的操作,例如一些工具類,用戶只需要根據(jù)傳入?yún)?shù)進(jìn)行操作即可。實(shí)例1:航天器信息查詢工具7.5

先定一個(gè)小目標(biāo)!7.5實(shí)例1:航天器信息查詢工具根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例1:航天器信息查詢工具本實(shí)例要求利用所學(xué)的面向?qū)ο蟮闹R(shí),設(shè)計(jì)一個(gè)航天器信息查詢工具類,該類提供了查詢功能,用于根據(jù)用戶輸入的航天器或火箭的名稱輸出其對(duì)應(yīng)的詳細(xì)信息。航天器和火箭的簡(jiǎn)介信息如表所示。7.5實(shí)例1:航天器信息查詢工具函數(shù)時(shí)間簡(jiǎn)介天問(wèn)一號(hào)2020年天問(wèn)一號(hào)是我國(guó)自行研制的探測(cè)器,負(fù)責(zé)執(zhí)行我國(guó)第一次自主火星探測(cè)任務(wù)長(zhǎng)征十一號(hào)海射運(yùn)載火箭2022年長(zhǎng)征十一號(hào)是我國(guó)自主研制的一型四級(jí)全固體運(yùn)載火箭,該火箭主要用于快速機(jī)動(dòng)發(fā)射應(yīng)急衛(wèi)星,滿足自然災(zāi)害、突發(fā)事件等應(yīng)急情況下微小衛(wèi)星發(fā)射需求長(zhǎng)征五號(hào)B運(yùn)載火箭2020年長(zhǎng)征五號(hào)B運(yùn)載火箭是專門為我國(guó)載人航天工程空間站建設(shè)而研制的一型新型運(yùn)載火箭,以長(zhǎng)征五號(hào)火箭為基礎(chǔ)改進(jìn)而成,是我國(guó)近地軌道運(yùn)載能力最大的新一代運(yùn)載火箭使用列表保存價(jià)格信息。定義空列表用于保存用戶選購(gòu)商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路7.5實(shí)例1:航天器信息查詢工具在Chapter07項(xiàng)目中創(chuàng)建01_info_search.py文件。在01_info_search.py中編寫代碼。運(yùn)行01_info_search.py文件。實(shí)現(xiàn)步驟7.5實(shí)例1:航天器信息查詢工具繼承7.6

先定一個(gè)小目標(biāo)!掌握單繼承的語(yǔ)法,能夠在類中實(shí)現(xiàn)單繼承7.6.1單繼承單繼承7.6.1單繼承單繼承指的是子類只繼承一個(gè)父類,子類在繼承父類的同時(shí),會(huì)自動(dòng)擁有父類中的公有方法和公有屬性。若在定義類時(shí)沒(méi)有顯式指定該類的父類,那么該類默認(rèn)繼承基類object。其語(yǔ)法格式如下:

class子類名(父類名):……語(yǔ)法格式classAmphibian:name="兩棲動(dòng)物"deffeatures(self):print("幼年用鰓呼吸")print("成年用肺兼皮膚呼吸")classFrog(Amphibian):#Frog類繼承自Amphibian類defattr(self):print("我會(huì)呱呱叫")示例1.isinstance()函數(shù)(1)isinstance()函數(shù)isinstance()函數(shù)用于判斷對(duì)象所屬的類型,它有2個(gè)參數(shù)o和t,其中參數(shù)o表示要判斷類型的對(duì)象,第二個(gè)參數(shù)t表示類型,如果o是類型為t的對(duì)象,則isinstance()函數(shù)返回True,否則返回False。示例代碼如下。isinstance(frog,Frog)多學(xué)一招:isinstance()函數(shù)與issubclass()函數(shù)2.issubclass()函數(shù)(2)issubclass()函數(shù)issubclass()函數(shù)用于檢查類的繼承關(guān)系,它也有2個(gè)參數(shù)cls和classinfo,其中參數(shù)cls表示要判斷的子類類型,參數(shù)classinfo表示要判斷的父類類型,如果類型cls是類型classinfo的子類,則issubclass()函數(shù)返回True,否則返回False。示例代碼如下。issubclass(Frog,AmphAnimal)多學(xué)一招:isinstance()函數(shù)與issubclass()函數(shù)

先定一個(gè)小目標(biāo)!掌握多繼承的語(yǔ)法,能夠在類中實(shí)現(xiàn)多繼承7.6.2多繼承多繼承多繼承指的是一個(gè)子類繼承多個(gè)父類,其語(yǔ)法格式如下:class子類(父類A,父類B,...):……語(yǔ)法格式classEnglish:defreceive_eng_know(self):print('具備英語(yǔ)知識(shí)。')classMath:defreceive_math_know(self):print('具備數(shù)學(xué)知識(shí)。')classStudent(English,Math):defstudy(self):print('學(xué)生的任務(wù)是學(xué)習(xí)。')示例7.6.2多繼承stu=Student()stu.receive_eng_know()stu.receive_math_know()stu.study()

先定一個(gè)小目標(biāo)!掌握方法重寫的方式,能夠在子類中重寫從父類繼承的方法7.6.3方法的重寫方法的重寫7.6.3方法的重寫Python中實(shí)現(xiàn)方法重寫的方式非常簡(jiǎn)單,只要在子類中定義與父類方法同名的方法,在方法中按照子類需求重新編寫功能代碼即可。classFelines:

defspeciality(self):

print("貓科動(dòng)物善于奔跑")classCat(Felines):

name=“貓”

defspeciality(self):

print(f'{}愛(ài)吃魚')

print(f'{}會(huì)爬樹')示例cat=Cat()cat.speciality()

先定一個(gè)小目標(biāo)!掌握super()函數(shù)的使用,能夠通過(guò)super()函數(shù)調(diào)用父類被重寫的方法7.6.4super()函數(shù)super()函數(shù)如果子類重寫了父類的方法,但仍希望調(diào)用父類中的方法,該如何實(shí)現(xiàn)呢?Python中提供了一個(gè)super()函數(shù),通過(guò)該函數(shù)可以調(diào)用父類中的方法。例如,使用super()函數(shù)在Cat類中調(diào)用Felines類中的spciality()方法,具體代碼如下。classCat(Felines):name="貓"defspeciality(self):print(f'{}愛(ài)吃魚')print(f'{}會(huì)爬樹')print('-'*20)super().speciality()示例cat=Cat()cat.speciality()

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論