yhon中類的定義與使用_第1頁
yhon中類的定義與使用_第2頁
yhon中類的定義與使用_第3頁
yhon中類的定義與使用_第4頁
yhon中類的定義與使用_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python中類的定義與使用用知識(shí)的浪花去推動(dòng)思考的風(fēng)帆,用智慧的火星去點(diǎn)燃思想的火花,用浪漫的激情去創(chuàng)造美好的生活,用科學(xué)的力量去強(qiáng)勁騰飛的翅膀!翟哥復(fù)習(xí)Python的特點(diǎn)本次主要知識(shí)點(diǎn)一

面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)二

定義和使用類三

類的繼承和多態(tài)四

思考題五

總結(jié)一

面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)1.3給大家介紹對(duì)象爬跑咬人吃東西睡覺綠色四條腿10kg有外殼大嘴巴對(duì)象=屬性+方法1.4面向?qū)ο蟪绦蛟O(shè)計(jì)中的基本概念

(1)對(duì)象(Object):面向?qū)ο蟪绦蛟O(shè)計(jì)思想可以將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起,形成一個(gè)實(shí)體,這個(gè)實(shí)體就是對(duì)象。(2)類(class):具有相同或相似性質(zhì)的對(duì)象的抽象就是類。因此,對(duì)象的抽象是類,類的具體化就是對(duì)象。例如,如果人類是一個(gè)類,則一個(gè)具體的人就是一個(gè)對(duì)象。(3)封裝:將數(shù)據(jù)和操作捆綁在一起,定義一個(gè)新類的過程就是封裝。(4)繼承:類之間的關(guān)系,在這種關(guān)系中,一個(gè)類共享了一個(gè)或多個(gè)其他類定義的結(jié)構(gòu)和行為。繼承描述了類之間的關(guān)系。子類可以對(duì)基類的行為進(jìn)行擴(kuò)展、覆蓋、重定義。如果人類是一個(gè)類,則可以定義一個(gè)子類“男人”?!澳腥恕笨梢岳^承人類的屬性(例如姓名、身高、年齡等)和方法(即動(dòng)作。例如,吃飯和走路),在子類中就無需重復(fù)定義了。從同一個(gè)類中繼承得到的子類也具有多態(tài)性,即相同的函數(shù)名在不同子類中有不同的實(shí)現(xiàn)。就如同子女會(huì)從父母那里繼承到人類共有的特性,而子女也具有自己的特性。(5)方法:也稱為成員函數(shù),是指對(duì)象上的操作,作為類聲明的一部分來定義。方法定義了可以對(duì)一個(gè)對(duì)象可以執(zhí)行的操作。(6)構(gòu)造函數(shù):一種成員函數(shù),來在創(chuàng)建對(duì)象時(shí)初始化對(duì)象。構(gòu)造函數(shù)一般與它所屬的類完全同名。二

定義和使用類2.1聲明類2.2類方法2.3使用instance()函數(shù)判斷對(duì)象類型2.1聲明類在Python中,可以使用class關(guān)鍵字來聲明一個(gè)類,其基本語法如下:class類名:

成員變量

成員函數(shù)同樣,Python使用縮進(jìn)標(biāo)識(shí)類的定義代碼。【例2-1】classPerson: defSayHello(self): print("Hello!")2.1.1self可以看到,在在成員函數(shù)SayHello()中有一個(gè)參數(shù)數(shù)self。這也是類的成員函數(shù)數(shù)(方法)與與普通函數(shù)的的主要區(qū)別。類的成員函函數(shù)必須有一個(gè)參數(shù)self,而且位于參參數(shù)列表的開開頭。self就代表類的實(shí)實(shí)例(對(duì)象))自身,可以使用self引用類的屬性性和成員函數(shù)數(shù)。在后面部部分還會(huì)結(jié)合合實(shí)際應(yīng)用介介紹self的使用方法。。2.1.2定定義類的對(duì)象象對(duì)象是類的實(shí)實(shí)例。如果人類是是一個(gè)類的話話,那么某個(gè)個(gè)具體的人就就是一個(gè)對(duì)象象。只有定義義了具體的對(duì)對(duì)象,才能使使用類。Python創(chuàng)建對(duì)象的方方法如下:對(duì)象名=類名()例如,下面的的代碼定義了了一個(gè)類Person的對(duì)象p:p=Person()【例2-2】classPerson:defSayHello(self):print("Hello!");p=Person()p.SayHello()運(yùn)行結(jié)果如下下:Hello!2.1.3成成員變量【例2-3】定義一個(gè)字符符串類MyString,定義成員變變量str,并同時(shí)對(duì)其其賦初始值。。classMyString:str="MyString"defoutput(self):print(self.str)s=MyString()s.output()2.1.4Python使用下劃線線作為變量前前綴和后綴來來指定特殊變變量,規(guī)則如如下:__xxx__表示系統(tǒng)定義義名字。__xxx表示類中的私私有變量名。類的成員變量量可以分為兩兩種情況,一一種是公有變變量,一種是是私有變量。。公有變量可可以在類的外外部訪問,它它是類與用戶戶之間交流的的接口。用戶戶可以通過公公有變量向類類中傳遞數(shù)據(jù)據(jù),也可以通通過公有變量量獲取類中的的數(shù)據(jù)。在類類的外部無法法訪問私有變變量,從而保保證類的設(shè)計(jì)計(jì)思想和內(nèi)部部結(jié)構(gòu)并不完完全對(duì)外公開開。在Python中除了__xxx格式的成員變變量外,其他他的成員變量量都是公有變變量。2.1.5構(gòu)構(gòu)造函數(shù)構(gòu)造函數(shù)是類類的一個(gè)特殊殊函數(shù),它擁擁有一個(gè)固定定的名稱,即即__init__(注意,函數(shù)數(shù)名是以兩個(gè)個(gè)下劃線開頭頭和兩個(gè)下劃劃線結(jié)束的)).當(dāng)創(chuàng)建類的對(duì)對(duì)象實(shí)例時(shí)系系統(tǒng)會(huì)自動(dòng)調(diào)調(diào)用構(gòu)造函數(shù)數(shù),通過構(gòu)造函數(shù)數(shù)對(duì)類進(jìn)行初初始化操作。?!纠?-4】】classMyString:def__init__(self):self.str="MyString"defoutput(self):print(self.str);s=MyString()s.output()【例2-5】classUserInfo:def__init__(self,name,pwd):self.username=nameself._pwd=pwddefoutput(self):print("用戶:"+self.username+"\n密碼:"+self._pwd);u=UserInfo("admin","123456")u.output()2.2類方法類方法是Python的一個(gè)新概念念。類方法具具有如下特性性:(1)與靜態(tài)方法法一樣,類方方法可以使用用類名調(diào)用類類方法。(2)與靜態(tài)方法法一樣,類成成員方法也無無法訪問實(shí)例例變量,但可可以訪問類的的靜態(tài)變量。。(3)類方法需傳傳入代表本類類的cls參數(shù)。使用裝飾符@staticmethod定義類方法class類名:@classmethoddef類方法名(cls):方法體2.3使用instance()函數(shù)判斷對(duì)象象類型使用instance()函數(shù)可以用來來檢測(cè)一個(gè)給給定的對(duì)象是是否屬于(繼繼承于)某個(gè)個(gè)類或類型,,如果是則返返回True;否則返回False。其使用方法法如下:isinstance(對(duì)象名,類名或類型名名)如果對(duì)象名屬屬于指定的類類名或類型名名,則instance()函數(shù)返回True,否則返回回False。三類的繼繼承和多態(tài)態(tài)繼承和多態(tài)態(tài)是面向?qū)?duì)象程序設(shè)設(shè)計(jì)思想的的重要機(jī)制制。類可以繼承承其他類的的內(nèi)容,包包括成員變變量和成員員函數(shù)。而從同一一個(gè)類中繼繼承得到的的子類也具具有多態(tài)性性,即相同同的函數(shù)名名在不同子子類中有不不同的實(shí)現(xiàn)現(xiàn)。就如同同子女會(huì)從從父母那里里繼承到人人類共有的的特性,而而子女也具具有自己的的特性。在OOP程程序設(shè)計(jì)中中,當(dāng)我們們定義一個(gè)個(gè)class的時(shí)候候,可以從從某個(gè)現(xiàn)有有的class繼承承,新的class稱為子類(Subclass),而被繼承的class稱為基類類、父類或或超類(Baseclass、Superclass)。。3.1繼繼承classAnimal(object):defrun(self):print('Animalisrunning...')classDog(Animal):passclassCat(Animal):passdog=Dog()dog.run()cat=Cat()cat.run()運(yùn)行結(jié)果如如下:Animalisrunning...Animalisrunning...繼承有什么么好處?最最大的好處處是子類獲獲得了父類類的全部功功能。由于于Animial實(shí)實(shí)現(xiàn)了run()方方法,因此此,Dog和Cat作為它的的子類,什什么事也沒沒干,就自自動(dòng)擁有了了run()方法。。3.2多多態(tài)當(dāng)我們定義義一個(gè)class的的時(shí)候,我我們實(shí)際上上就定義了了一種數(shù)據(jù)據(jù)類型。我我們定義的的數(shù)據(jù)類型型和Python自自帶的數(shù)據(jù)據(jù)類型,比比如str、list、dict沒什什么兩樣。。舉例如下下:a=list()#a是list類型型b=Animal()#b是是Animal類型型c=Dog()#c是Dog類型>>>isinstance(a,list)True>>>isinstance(b,Animal)True>>>isinstance(c,Dog)True看來a、b、c確實(shí)實(shí)對(duì)應(yīng)著list、、Animal、Dog這3種類型。。但是等等,,試試:>>>isinstance(c,Animal)True看來c不僅僅僅是Dog,c還還是Animal?。∷乃伎伎碱}1.小明和和小強(qiáng)都是是張老師的的學(xué)生,張張老師的生生日是M月月N日,2人都不知知道。張老老師的生日日是下列10組中的的一天,張張老師把M值告訴了了小明,把把N值告訴訴了小強(qiáng),,張老師問問他們知道道他的生日日是那一天天嗎?3月4日3月5日日3月8日6月4日6月月7日9月1日9月5日日12月1日12月2日12月8日小明說:如如果我不知知道的話,,小強(qiáng)肯定定也不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論