Python程序設(shè)計(jì)基礎(chǔ)項(xiàng)目化教程 課件 項(xiàng)目八 類與對象_第1頁
Python程序設(shè)計(jì)基礎(chǔ)項(xiàng)目化教程 課件 項(xiàng)目八 類與對象_第2頁
Python程序設(shè)計(jì)基礎(chǔ)項(xiàng)目化教程 課件 項(xiàng)目八 類與對象_第3頁
Python程序設(shè)計(jì)基礎(chǔ)項(xiàng)目化教程 課件 項(xiàng)目八 類與對象_第4頁
Python程序設(shè)計(jì)基礎(chǔ)項(xiàng)目化教程 課件 項(xiàng)目八 類與對象_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《Python語言程序設(shè)計(jì)》項(xiàng)目八類與對象Contents類的定義和創(chuàng)建實(shí)例類中屬性和方法構(gòu)造方法和析構(gòu)方法類的定義PART01根據(jù)操作數(shù)據(jù)的函數(shù)或語句塊來設(shè)計(jì)程序的,稱為面向過程的編程。面向?qū)ο缶幊獭狾bjectOrientedProgramming,簡稱OOP,是一種程序設(shè)計(jì)思想。OOP把對象作為程序的基本單元,一個對象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。在Python中,所有數(shù)據(jù)類型都可以視為對象,當(dāng)然也可以自定義對象。自定義的對象數(shù)據(jù)類型就是面向?qū)ο笾械念悾–lass)的概念。面向?qū)ο?/p>

類和對象的關(guān)系即數(shù)據(jù)類型與變量的關(guān)系根據(jù)一個類可以創(chuàng)建多個對象,而只能是某一個類的對象。類規(guī)定了可以用于存儲什么數(shù)據(jù),而對象用于每個對象實(shí)際存儲數(shù)據(jù),每個對象可存儲不同的數(shù)據(jù)。類與對象

例如,有一個學(xué)生類,其中包括學(xué)號和姓名兩個屬性,則根據(jù)學(xué)生類可以創(chuàng)建多個學(xué)生對象,每個學(xué)生對象可以具有不同的學(xué)號和姓名信息。類與對象

在一個類中,包含屬性和各種方法屬性對應(yīng)一個類可以用來保存哪些數(shù)據(jù)方法對應(yīng)一個類可以支持哪些操作(即數(shù)據(jù)處理)類的定義形式多樣可以直接創(chuàng)建新的類也可以基于一個或多個已有的類創(chuàng)建新的類可以創(chuàng)建一個空的類,然后再動態(tài)添加屬性和方法也可以在創(chuàng)建類的同時設(shè)置屬性和方法類的定義

class類名:

語句1

語句2……

語句N類的定義形式如下所示:1 classStudent:#定義一個名字為Student的類2 pass#一個空語句,起到占位作用,表示Student類中沒有任何屬性和方法下面是一個最簡單的類的定義方法,即定義一個空類。類的定義

創(chuàng)建實(shí)例PART02創(chuàng)建實(shí)例【任務(wù)描述】創(chuàng)建一個類根據(jù)類創(chuàng)建一個實(shí)例【關(guān)鍵步驟】創(chuàng)建一個類根據(jù)類創(chuàng)建一個實(shí)例示例01

類名(參數(shù)表)定義了一個類后,就可以創(chuàng)建該類的實(shí)例對象,其語法格式如下所示:1 classStudent:#定義一個名字為Student的類2 pass#一個空語句,起到占位作用,表示Student類中沒有任何屬性和方法3 if__name__=='__main__':4 stu=Student()#創(chuàng)建Student類的對象,并將創(chuàng)建的對象賦給變量stu5 print(stu)#輸出stu其中,參數(shù)表是指創(chuàng)建對象時傳入的參數(shù)。下面給出不傳遞參數(shù)情況下創(chuàng)建對象的程序示例程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:<__main__.Studentobjectat0x00000216EE7DF0F0>從輸出結(jié)果中可以看到,stu是Student類的對象,其地址為0x00000216EE7DF0F0。創(chuàng)建實(shí)例示例01

類屬性和普通方法的定義及其訪問PART031 classStudent:#定義Student類2 name='Unknown'#定義Student類中有一個name屬性屬性即對應(yīng)一個類對象可以保存的數(shù)據(jù)??梢灾苯釉诙x類時指定該類的屬性,即類屬性。類名或?qū)ο竺?屬性名對類屬性的訪問,既可以直接通過類名訪問,也可以通過該類的對象訪問類屬性定義及其訪問

類屬性定義及其訪問【任務(wù)描述】了解類屬性定義及其訪問【關(guān)鍵步驟】了解類屬性定義及其訪問示例02

1 classStudent:#定義Student類2 name='Unknown'#定義Student類中有一個name屬性3 if__name__=='__main__':4 print('第4行輸出:',S)5 stu1=Student()#創(chuàng)建Student類對象stu16 stu2=Student()#創(chuàng)建Student類對象stu27 print('第7行輸出:stu1%s,stu2%s'%(,))8 S='未知'#將Student的類屬性name賦為“未知”9 print('第9行輸出:',S)10 print('第10行輸出:stu1%s,stu2%s'%(,))11 ='李曉明'#將stu1的name屬性賦值為“李曉明”12 ='馬紅'#將stu2的name屬性賦值為“馬紅”13 print('第13行輸出:',S)14 print('第14行輸出:stu1%s,stu2%s'%(,))15 S='學(xué)生'#將Student的類屬性name賦為“學(xué)生”16 print('第16行輸出:',S)17 print('第17行輸出:stu1%s,stu2%s'%(,))類屬性的訪問示例類屬性定義及其訪問示例02

執(zhí)行程序后,則在屏幕上會輸出如下結(jié)果:第4行輸出:Unknown第7行輸出:stu1Unknown,stu2Unknown第9行輸出:未知第10行輸出:stu1未知,stu2未知第13行輸出:未知第14行輸出:stu1李曉明,stu2馬紅第16行輸出:學(xué)生第17行輸出:stu1李曉明,stu2馬紅類屬性定義及其訪問示例02

1 classStudent:#定義Student類2 name='Unknown'#定義Student類中有一個name屬性3 if__name__=='__main__':4 stu1=Student()#定義Student類對象stu15 stu2=Student()#定義Student類對象stu26 stu1.age=19#為對象stu1動態(tài)綁定新的屬性age7 print('stu1姓名:%s,年齡:%d'%(,stu1.age))#輸出姓名和年齡8 #print('stu2年齡:'%stu2.age)#取消注釋則該語句會報(bào)錯9 #print('使用類名訪問年齡屬性:'%Student.age)#取消注釋則該語句會報(bào)錯Python作為一種動態(tài)語言,除了可以在定義類時指定類屬性外,還可以動態(tài)地為已經(jīng)創(chuàng)建的對象綁定新的屬性。執(zhí)行程序后,則在屏幕上會輸出如下結(jié)果:姓名:Unknown,年齡:19類屬性定義及其訪問示例02

類中的方法實(shí)際上就是執(zhí)行某種數(shù)據(jù)處理功能的函數(shù)。與普通函數(shù)定義一樣,類中的方法在定義時也需要使用def關(guān)鍵字。類中的方法分為兩類:普通方法和內(nèi)置方法普通方法需要通過類的實(shí)例對象根據(jù)方法名調(diào)用內(nèi)置方法是在特定情況下由系統(tǒng)自動執(zhí)行類中普通方法定義及調(diào)用

實(shí)例對象名.方法名(實(shí)參列表)在定義類的普通方法時,第一個參數(shù)需要對應(yīng)調(diào)用方法時所使用的實(shí)例對象(一般命名為self,但也可以改為其他名字)。當(dāng)使用一個實(shí)例對象調(diào)用類的普通方法時,其語法格式為:類中普通方法定義及調(diào)用

類中普通方法定義及調(diào)用【任務(wù)描述】了解類中普通方法定義及調(diào)用【關(guān)鍵步驟】了解類中普通方法定義及調(diào)用示例03

1 classStudent:#定義Student類2 name='Unknown'#定義Student類中有一個name屬性3 defSetName(self,newname):#定義類的普通方法SetName4 =newname#將self對應(yīng)實(shí)例對象中的name屬性值賦為newname5 defPrintName(self):#定義類的普通方法PrintName6 print('姓名:%s'%)#輸出self對應(yīng)實(shí)例對象中的name屬性值7 if__name__=='__main__':8 stu1=Student()#定義Student類對象stu19 stu2=Student()#定義Student類對象stu210 stu1.SetName('李曉明')#通過stu1對象調(diào)用SetName方法11 stu2.SetName('馬紅')#通過stu1對象調(diào)用SetName方法12 stu1.PrintName()#通過stu1對象調(diào)用PrintName方法13 stu2.PrintName()#通過stu2對象調(diào)用PrintName方法14 #Student.SetName('未知')#取消前面的注釋,則會有系統(tǒng)報(bào)錯信息15 #Student.PrintName()#取消前面的注釋,則會有系統(tǒng)報(bào)錯信息在通過類的實(shí)例對象調(diào)用類中的普通方法時,并不需要傳入self參數(shù)的值,self會自動對應(yīng)調(diào)用該方法時所使用的對象。類中普通方法定義及調(diào)用示例03

私有屬性PART04私有屬性【任務(wù)描述】了解私有屬性定義及調(diào)用【關(guān)鍵步驟】了解私有屬性定義及調(diào)用示例04

1 classStudent:#定義Student類2 name='未知'#定義Student類中有一個name屬性3 __id='未知'#定義Student類中有一個__id私有屬性4 defSetInfo(self,newname,newid):#定義SetInfo函數(shù)5 =newname#將self對應(yīng)實(shí)例對象的name屬性賦為newname6 self.__id=newid#將self對應(yīng)實(shí)例對象的__id屬性賦為newid7 defPrintInfo(self):#定義PrintInfo函數(shù)8 print('姓名:%s,身份證號:%s'%(,self.__id))7 if__name__=='__main__':8 stu=Student()#定義Student類對象stu9 stu.SetInfo('李曉明','120XXXXXXXXXXXXXXX')#通過stu調(diào)用SetInfo方法10 stu.PrintInfo()#通過stu對象調(diào)用PrintInfo方法11 #print('身份證號:%s'%stu.__id)#取消前面的注釋,則程序會報(bào)錯私有屬性,是指在類內(nèi)可以直接訪問、而在類外無法直接訪問的屬性。私有屬性名是以__(兩個下劃線)開頭。私有屬性示例04

構(gòu)造方法和析構(gòu)方法PART03構(gòu)造方法與析構(gòu)方法【任務(wù)描述】了解構(gòu)造方法定義及調(diào)用了解析構(gòu)方法定義及調(diào)用【關(guān)鍵步驟】了解構(gòu)造方法定義及調(diào)用了解析構(gòu)方法定義及調(diào)用示例05

1 classStudent:#定義Student類2 def__init__(self):#定義構(gòu)造方法3 print('構(gòu)造方法被調(diào)用!')4 ='未知'#將self對應(yīng)對象的name屬性賦值為“未知”5 defPrintInfo(self):#定義普通方法PrintInfo6 print('姓名:%s'%)#輸出姓名信息7 if__name__=='__main__':8 stu=Student()#創(chuàng)建Student類對象stu,自動執(zhí)行構(gòu)造方法9 stu.PrintInfo()#通過stu對象調(diào)用PrintInfo方法構(gòu)造方法是Python類中的內(nèi)置方法之一,它的方法名為__init__,在創(chuàng)建一個類對象時會自動執(zhí)行,負(fù)責(zé)完成新創(chuàng)建對象的初始化工作。執(zhí)行程序后,則在屏幕上會輸出:構(gòu)造方法被調(diào)用!姓名:未知構(gòu)造方法與析構(gòu)方法示例05

1 classStudent:#定義Student類2 def__init__(self,name):#定義構(gòu)造方法3 print('構(gòu)造方法被調(diào)用!')4 =name#將self對應(yīng)對象的name屬性賦為形參name的值5 defPrintInfo(self):#定義普通方法PrintInfo6 print('姓名:%s'%)#輸出姓名信息7 if__name__=='__main__':8 stu=Student('李曉明')#創(chuàng)建Student類對象stu,自動執(zhí)行構(gòu)造方法9 stu.PrintInfo()#通過stu對象調(diào)用PrintInfo方法構(gòu)造方法中,除了self,也可以設(shè)置其他參數(shù)。執(zhí)行程序后,則在屏幕上會輸出:構(gòu)造方法被調(diào)用!姓名:李曉明構(gòu)造方法與析構(gòu)方法示例05

1 classStudent:#定義Student類2 def__init__(self,name='未知'):#定義構(gòu)造方法3 print('構(gòu)造方法被調(diào)用!')4 =name#將self對應(yīng)對象的name屬性賦為形參name的值5 defPrintInfo(self):#定義普通方法PrintInfo6 print('姓名:%s'%)#輸出姓名信息7 if__name__=='__main__':8 stu1=Student()#創(chuàng)建Student類對象stu1,自動執(zhí)行構(gòu)造方法9 stu2=Student('李曉明')#創(chuàng)建Student類對象stu2,自動執(zhí)行構(gòu)造方法10 stu1.PrintInfo()#通過stu1對象調(diào)用PrintInfo方法11 stu2.PrintInfo()#通過stu1對象調(diào)用PrintInfo方法另外,構(gòu)造方法也可以設(shè)置默認(rèn)參數(shù)。執(zhí)行程序后,則在屏幕上會輸出:構(gòu)造方法被調(diào)用!構(gòu)造方法被調(diào)用!姓名:未知姓名:李曉明構(gòu)造方法與析構(gòu)方法示例05

1 classStudent:#定義Student類2 def__init__(self,name):#定義構(gòu)造方法3 =name#將self對應(yīng)對象的name屬性賦值為形參name的值4 print('姓名為%s的對象被創(chuàng)建!'%)5 def__del__(self):#定義析構(gòu)方法6 print('姓名為%s的對象被銷毀!'%)7 deffunc(name):8 stu=Student(name)#創(chuàng)建Student類對象stu9 if__name__=='__main__':10 stu1=Student('李曉明')#創(chuàng)建Student類對象stu111 stu2=Student('馬紅')#創(chuàng)建Student類對象stu212 delstu2#使用del刪除stu2對象13 func('張剛')#調(diào)用func函數(shù)析構(gòu)方法是類的另一個內(nèi)置方法,它的方法名為__del__,在銷毀一個類對象時會自動執(zhí)行,負(fù)責(zé)完成待銷毀對象的資源清理工作,如關(guān)閉文件等。構(gòu)造方法與析構(gòu)方法示例05

執(zhí)行程序后,則在屏幕上會輸出:姓名為李曉明的對象被創(chuàng)建!姓名為馬紅的對象被創(chuàng)建!姓名為馬紅的對象被銷毀!姓名為張剛的對象被創(chuàng)建!姓名為張剛的對象被銷毀!構(gòu)造方法與析構(gòu)方法示例05

常用內(nèi)置方法PART06常用內(nèi)置方法【任務(wù)描述】了解__str__定義及調(diào)用了解比較運(yùn)算的內(nèi)置方法【關(guān)鍵步驟】了解__str__定義及調(diào)用了解比較運(yùn)算的內(nèi)置方法示例06

1 classComplex:#定義復(fù)數(shù)類Complex2 def__init__(self,real,image):#定義構(gòu)造方法3 self.real=real#將self對應(yīng)對象的real屬性賦值為形參real的值4 self.image=image#將self對應(yīng)對象的image屬性賦值為形參image的值5 def__str__(self):#定義內(nèi)置方法__str__6 returnstr(self.real)+'+'+str(self.image)+'i'7 if__name__=='__main__':8 c=Complex(3.2,5.3)#定義Complex類對象c9 print(c)#輸出c調(diào)用str函數(shù)對類對象進(jìn)行處理時或者調(diào)用Python內(nèi)置函數(shù)format()和print()時自動執(zhí)行,__str__方法的返回值必須是字符串。執(zhí)行程序后,則在屏幕上會輸出:3.2+5.3i__str__

內(nèi)置方法功能描述__gt__(self,other)進(jìn)行self>other運(yùn)算時自動執(zhí)行__lt__(self,other)進(jìn)行self<other運(yùn)算時自動執(zhí)行__ge__(self,other)進(jìn)行self>=other運(yùn)算時自動執(zhí)行__le__(self,other)進(jìn)行self<=other運(yùn)算時自動執(zhí)行__eq__(self,other)進(jìn)行self==other運(yùn)算時自動執(zhí)行__ne__(self,other)進(jìn)行self!=other運(yùn)算時自動執(zhí)行比較運(yùn)算的內(nèi)置方法

1 classStudent:#定義Student類2 def__init__(self,name,age):#定義構(gòu)造方法3 =name#將self對應(yīng)對象的name屬性賦為形參name的值4 self.age=age#將self對應(yīng)對象的age屬性賦為形參age的值5 def__gt__(self,other):#定義內(nèi)置方法__gt__6 returnself.age>other.age7 def__ne__(self,other):#定義內(nèi)置方法__ne__8 returnself.age!=other.age9 def__le__(self,other):#定義內(nèi)置方法__le__10 returnself.age<=other.age11 if__name__=='__main__':12 stu1=Student('李曉明',19)#定義Student類對象stu113 stu2=Student('馬紅',20)#定義Student類

溫馨提示

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

評論

0/150

提交評論