《Python程序設(shè)計(jì)教程》-第9章-面向?qū)ο蟪绦蛟O(shè)計(jì)_第1頁(yè)
《Python程序設(shè)計(jì)教程》-第9章-面向?qū)ο蟪绦蛟O(shè)計(jì)_第2頁(yè)
《Python程序設(shè)計(jì)教程》-第9章-面向?qū)ο蟪绦蛟O(shè)計(jì)_第3頁(yè)
《Python程序設(shè)計(jì)教程》-第9章-面向?qū)ο蟪绦蛟O(shè)計(jì)_第4頁(yè)
《Python程序設(shè)計(jì)教程》-第9章-面向?qū)ο蟪绦蛟O(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(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)介

馬馳率風(fēng),羊致清和本章目標(biāo)了解面向過(guò)程和面向?qū)ο髢纱缶幊趟枷胝莆疹惖亩x掌握對(duì)象的創(chuàng)建掌握屬性和方法的調(diào)用掌握面向?qū)ο蟮娜筇卣髡莆談?dòng)態(tài)語(yǔ)言的特點(diǎn)掌握Object類的常用方法了解深拷貝與淺拷貝馬馳率風(fēng),羊致清和兩大編程思想面向過(guò)程面向?qū)ο蠊δ苌系姆庋b典型代表:屬性和行為上的封裝典型代表:馬馳率風(fēng),羊致清和兩大編程思想面向過(guò)程面向?qū)ο髤^(qū)別事物比較簡(jiǎn)單,可以用線性的思維去解決事物比較復(fù)雜,使用簡(jiǎn)單的線性思維無(wú)法解決共同點(diǎn)面向過(guò)程和面向?qū)ο蠖际墙鉀Q實(shí)際問(wèn)題的一種思維方式二者相輔相成,并不是對(duì)立的

解決復(fù)雜問(wèn)題,通過(guò)面向?qū)ο蠓绞奖阌谖覀儚暮暧^上把握事物之間復(fù)雜的關(guān)系,方便我們分析整個(gè)系統(tǒng),具體到微觀操作,仍然使用面向過(guò)程方式來(lái)處理面向過(guò)程與面向?qū)ο蟮漠愅c(diǎn)馬馳率風(fēng),羊致清和類和對(duì)象類是怎么來(lái)的?酒水生鮮日用百貨馬馳率風(fēng),羊致清和類和對(duì)象類是怎么來(lái)的?是由N多個(gè)對(duì)象抽取出“像”的屬性和行為從而歸納總結(jié)出來(lái)的一種類別馬馳率風(fēng),羊致清和類和對(duì)象在Python中一切皆對(duì)象worldhellopython字符串對(duì)象str字符串類型98510200整數(shù)對(duì)象int整數(shù)類型馬馳率風(fēng),羊致清和類和對(duì)象自定義數(shù)據(jù)類型的語(yǔ)法結(jié)構(gòu)為class

類名():pass創(chuàng)建對(duì)象的語(yǔ)法格式為:對(duì)象名=類名()類(圖紙)對(duì)象(具體實(shí)例)馬馳率風(fēng),羊致清和類的組成類類屬性實(shí)例屬性實(shí)例方法靜態(tài)方法類方法直接定義在類中,方法外的變量定義在__init__方法中,使用self打點(diǎn)的變量定義在類中的函數(shù),而且自帶參數(shù)self使用裝飾器@staticmethod修飾的方法使用裝飾器@classmethod修飾的方法馬馳率風(fēng),羊致清和動(dòng)態(tài)綁定屬性和方法每個(gè)對(duì)象的屬性名稱相同,但屬性值不同可以為某個(gè)對(duì)象綁定獨(dú)有的屬性或方法馬馳率風(fēng),羊致清和動(dòng)態(tài)綁定屬性和方法馬馳率風(fēng),羊致清和面向?qū)ο蟮娜筇卣鞣庋b隱藏內(nèi)部細(xì)節(jié),對(duì)外提供操作方式繼承是在函數(shù)調(diào)用時(shí),使用“形參名稱=值”的方式進(jìn)行傳參,傳遞參數(shù)順序可以與定義時(shí)參數(shù)的順序不同多態(tài)是在函數(shù)定義時(shí),直接對(duì)形式參數(shù)進(jìn)行賦值,在調(diào)用時(shí)如果該參數(shù)不傳值,將使用默認(rèn)值,如果該參數(shù)傳值,則使用傳遞的值馬馳率風(fēng),羊致清和面向?qū)ο蟮娜筇卣鞣庋b隱藏內(nèi)部細(xì)節(jié),對(duì)外提供操作方式權(quán)限控制是通過(guò)對(duì)屬性或方法添加單下劃線、雙下劃線以及首尾雙下劃線來(lái)實(shí)現(xiàn)單下劃線開(kāi)頭:以單下劃線開(kāi)頭的屬性或方法表示protected受保護(hù)的成員,這類成員被視為僅供內(nèi)部使用,允許類本身和子類進(jìn)行訪問(wèn),但實(shí)際上它可以被外部代碼訪問(wèn)。雙下劃線開(kāi)頭:表示private私有的成員,這類成員只允許定義該屬性或方法的類本身進(jìn)行訪問(wèn)首尾雙下劃線

:一般表示特殊的方法馬馳率風(fēng),羊致清和面向?qū)ο蟮娜筇卣骼^承繼承的概念也源于人們生活,子孫輩會(huì)從父輩那里繼承一些體貌特征,但子孫輩又不完全是父輩的翻版,還會(huì)有自己的一些特征馬馳率風(fēng),羊致清和面向?qū)ο蟮娜筇卣骼^承在Python中一個(gè)子類可以繼承N多個(gè)父類一個(gè)父類也可以擁有N多個(gè)子類如果一個(gè)類沒(méi)有繼承任何類,那么這個(gè)類默認(rèn)繼承的是object類繼承的語(yǔ)法結(jié)構(gòu):class類名(父類1,父類2….,父類N): pass馬馳率風(fēng),羊致清和面向?qū)ο蟮娜筇卣髯宇惱^承了父類就擁有了父類中公有成員和受保護(hù)的成員父類的方法法并不能完全適合子類的需要求這個(gè)時(shí)候子類就可以重寫父類的方法子類在重新父類的方法時(shí),要求方法的名稱必須與父類方法的名稱相同,在子類重寫后的方法中可以通過(guò)super().xxx()調(diào)用父類中的方法方法重寫父類子類1子類2父類的方法子類1重寫子類2重寫馬馳率風(fēng),羊致清和面向?qū)ο蟮娜筇卣鞫鄳B(tài)指的就是“多種形態(tài)”,即便不知道一個(gè)變量所引用的對(duì)象到底是什么類型,仍然可以通過(guò)這個(gè)變量調(diào)用對(duì)象的方法。在程序運(yùn)行過(guò)程中根據(jù)變量所引用對(duì)象的數(shù)據(jù)類型,動(dòng)態(tài)決定調(diào)用哪個(gè)對(duì)象中的方法。Python語(yǔ)言中的多態(tài),根本不關(guān)心對(duì)象的數(shù)據(jù)類型,也不關(guān)心類之間是否存在繼承關(guān)系,只關(guān)心對(duì)象的行為(方法)。只要不同的類中有同名的方法,即可實(shí)現(xiàn)多態(tài)馬馳率風(fēng),羊致清和object類所有類直接或間接的父類所有類都擁有object類的屬性和方法objectobject類中特殊的方法功能描述__new__()由系統(tǒng)調(diào)用,用于創(chuàng)建對(duì)象__init__()創(chuàng)建對(duì)象時(shí)手動(dòng)調(diào)用,用于初始化對(duì)象屬性值__str__()對(duì)象的描述,返回值是str類型,默認(rèn)輸出對(duì)象的內(nèi)存地址。馬馳率風(fēng),羊致清和特殊方法運(yùn)算符特殊方法功能描述+__add__()執(zhí)行加法運(yùn)算-__sub__()執(zhí)行減法運(yùn)算<,<=,==__lt__(),__le__(),__eq__()執(zhí)行比較運(yùn)算>,>=,!=__gt__(),__ge__(),__ne__()執(zhí)行比較運(yùn)算*,/__mul__(),__truediv__()執(zhí)行乘法運(yùn)算,非整除運(yùn)算%,//__mod__(),__floordiv__()執(zhí)行取余運(yùn)算,整除運(yùn)算**__pow__()執(zhí)行冪運(yùn)算馬馳率風(fēng),羊致清和特殊屬性特殊屬性功能描述obj.__dict__對(duì)象的屬性字典obj.__class__對(duì)象所屬的類class.__bases__類的父類元組class.__base__類的父類class.__mro__類的層次結(jié)構(gòu)class._subclasses__()類的子類列表馬馳率風(fēng),羊致清和類的深拷貝與淺拷貝淺拷貝拷貝時(shí),對(duì)象包含的子對(duì)象內(nèi)容不拷貝,因此,源對(duì)象與拷貝對(duì)象會(huì)引用同一個(gè)子對(duì)象深拷貝使用copy模塊的deepcopy函數(shù),遞歸拷貝對(duì)象中包含的子對(duì)象,源對(duì)象和拷貝對(duì)象所有的子對(duì)象也不相同變量的賦值只是形成兩個(gè)變量,實(shí)際上還是指向同一個(gè)對(duì)象馬馳率風(fēng),羊致清和本章總結(jié)程序設(shè)計(jì)的兩大思想面向過(guò)程:功能的封裝,解決問(wèn)題的思維方式為線性思維面向?qū)ο螅簩傩院托袨榈姆庋b,解決問(wèn)題的思維方式為參與者(類和對(duì)象)面向過(guò)程與面向?qū)ο蠖呦噍o相成,解決復(fù)雜問(wèn)題通過(guò)面向?qū)ο蠓绞奖阌趶暮暧^上把握事物之間復(fù)雜的關(guān)系,方便分析整個(gè)系統(tǒng),具體到微觀操作,仍然使用面向過(guò)程方式來(lái)處理Python中一切皆對(duì)象,可通過(guò)內(nèi)置函數(shù)type()查看對(duì)象的數(shù)據(jù)類型馬馳率風(fēng),羊致清和本章總結(jié)自定義類的語(yǔ)法class類名(父類1,父類2,……,父類N):pass創(chuàng)建對(duì)象的語(yǔ)法

對(duì)象名=類名(參數(shù)列表)類中可以編寫類屬性、實(shí)例屬性、實(shí)例方法、類方法以及靜態(tài)方法類是模板,一個(gè)類可以創(chuàng)建N多個(gè)對(duì)象,每個(gè)對(duì)象的屬性名稱相同,屬性值各不相同Python是動(dòng)態(tài)語(yǔ)言,在創(chuàng)建對(duì)象之后,可以動(dòng)態(tài)的綁定屬性和方法馬馳率風(fēng),羊致清和本章總結(jié)訪問(wèn)權(quán)限控制單下劃線:以單下劃線開(kāi)頭,表示protected受保護(hù)的成員,只允許類本身和子類進(jìn)行訪問(wèn),可以通過(guò)對(duì)象名去訪問(wèn)雙下劃線:雙下劃線表示private私有的成員,只允許定義該方法的類本身訪問(wèn),不能通過(guò)類的對(duì)象訪問(wèn),但可以通過(guò)“對(duì)象名._類名__xxx”方式訪問(wèn)首尾雙下劃線:表示特殊的方法,一般是系統(tǒng)定義的名字馬馳率風(fēng),羊致清和本章總結(jié)面向?qū)ο蟮娜筇卣鞣庋b:隱藏內(nèi)部細(xì)節(jié),提高程序的安全性(健壯性)繼承:實(shí)現(xiàn)代碼的復(fù)用(重復(fù)使用),通過(guò)繼承可以理順類與類之間的關(guān)系多態(tài):不關(guān)心對(duì)象的數(shù)據(jù)類型,不關(guān)心是否具有繼承關(guān)系,只關(guān)心對(duì)象的行為(方法),提高程序的可擴(kuò)展性和可維護(hù)性object類是所有類直接或間接的父類,所有類都擁有object類的屬性和方法類的深拷貝與淺拷貝馬馳率風(fēng),羊致清和章節(jié)習(xí)題1)實(shí)例方法的第一個(gè)參數(shù)必須是(

A.list

B.statement

C.cls

D.selfD馬馳率風(fēng),羊致清和章節(jié)習(xí)題2)類中初始化方法__init__,在執(zhí)行什么操作時(shí)會(huì)被自動(dòng)調(diào)用(

A.創(chuàng)建對(duì)象(類實(shí)例化)時(shí)

B.調(diào)用類時(shí)

C.調(diào)用實(shí)例方法時(shí)

D.類加載時(shí)A馬馳率風(fēng),羊致清和章節(jié)習(xí)題3)閱讀下面代碼,程序的運(yùn)行結(jié)果是:(

A.代碼錯(cuò)誤

B.name:陳梅梅age:20

C.MyClass

D.‘name:陳梅梅age:20’B馬馳率風(fēng),羊致清和章節(jié)習(xí)題4)閱讀下面代碼,程序的運(yùn)行結(jié)果是:(

A.代碼錯(cuò)誤,show方法中少self

B.陳梅梅說(shuō):我20歲

C.應(yīng)該將修改為self.xm

D.‘陳梅梅說(shuō):我20歲’A馬馳率風(fēng),羊致清和章節(jié)習(xí)題5)閱讀下面代碼,程序的運(yùn)行結(jié)果是:(

A.代碼錯(cuò)誤

B.helloFather

C.FatherHello

D.FatherB馬馳率風(fēng),羊致清和章節(jié)習(xí)題6)閱讀下面代碼,程序的運(yùn)行結(jié)果是:(

A.1

B.2

C.3

D.123C馬馳率風(fēng),羊致清和章節(jié)習(xí)題7)關(guān)于面向?qū)ο蟮睦^承,以下說(shuō)明正確的是:(

A.繼承是指各對(duì)象之間的關(guān)系

B.繼承是指類之間的關(guān)系,用于提高代碼的復(fù)用性

C.繼承是指一個(gè)對(duì)象具有另一個(gè)對(duì)象的公有成員

D.繼承是指一組對(duì)象具有相似的屬性B馬馳率風(fēng),羊致清和章節(jié)習(xí)題8)與運(yùn)算符**對(duì)應(yīng)的特殊方法名是:(

A.__init__()

B.__len__()

C.__del__()

D.__pow__()D馬馳率風(fēng),羊致清和章節(jié)習(xí)題9)假設(shè)A類有一個(gè)私有的實(shí)例屬性__value,如何在類的外部將__value的值設(shè)置為10,目前A類的對(duì)象已創(chuàng)建完成,A類的對(duì)象名為a:(

A.a(chǎn).value=10

B.a(chǎn).__value=10

C.A.__value=10

D.a(chǎn)._A__value=10D馬馳率風(fēng),羊致清和章節(jié)習(xí)題10)在Python中,可以通過(guò)(

)將一個(gè)方法轉(zhuǎn)換為屬性:(

A.@property

B.property

C.property@

D.@property@A馬馳率風(fēng),羊致清和章節(jié)習(xí)題需求:定義一個(gè)圓類—Circle,提供一個(gè)屬性r(半徑),提供兩個(gè)方法:計(jì)算圓的面積get_area(self)和計(jì)算圓的周長(zhǎng)get_perimeter(self),通過(guò)兩個(gè)方法計(jì)算圓的周長(zhǎng)和面積并且對(duì)計(jì)算結(jié)果進(jìn)行輸出,最后從鍵盤錄入半徑,創(chuàng)建圓類的對(duì)象,并調(diào)用計(jì)算面積和周長(zhǎng)的方法輸出面積和周長(zhǎng)。運(yùn)行效果實(shí)戰(zhàn)一:定義一個(gè)圓的類計(jì)算面積和周長(zhǎng)馬馳率風(fēng),羊致清和章節(jié)習(xí)題需求:定義學(xué)生類Student,包含姓名,年齡,性別,分?jǐn)?shù)四個(gè)屬性,提供一個(gè)用于學(xué)員信息輸出的方法info(self)。編寫測(cè)試代碼,使用循環(huán)錄入5位學(xué)生的信息,由于錄入的學(xué)生信息中間使用“#”進(jìn)行分隔,所以需要使用字符串的split()方法,進(jìn)行劈分,使用劈分的信息創(chuàng)建學(xué)生對(duì)象,使用列表存儲(chǔ)學(xué)生信息,最后使用循環(huán)遍歷列表,調(diào)用對(duì)象的info()方法輸出學(xué)員信息。運(yùn)行效果實(shí)戰(zhàn)二:定義學(xué)生類錄入5個(gè)學(xué)生信息存儲(chǔ)到列表中馬馳率風(fēng),羊致清和章節(jié)習(xí)題運(yùn)行效果實(shí)戰(zhàn)二:定義學(xué)生類錄入5個(gè)學(xué)生信息存儲(chǔ)到列表中馬馳率風(fēng),羊致清和章節(jié)習(xí)題需求:樂(lè)手可以彈奏不同的樂(lè)器從而發(fā)出不同的聲音??梢詮椬嗟臉?lè)器包括二胡、鋼琴和琵琶。定義樂(lè)器類Instrument,包括方法make_sound()定義樂(lè)器類的子類:二胡Erhu、鋼琴Piano和小提琴Violin,定義一個(gè)函數(shù)可以彈奏各種樂(lè)器play(instrument),測(cè)試給樂(lè)手不同的樂(lè)器讓他彈奏運(yùn)行效果實(shí)戰(zhàn)三:使用面向?qū)ο笏枷雽?shí)現(xiàn)

溫馨提示

  • 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)論