版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《Python語言程序設(shè)計(jì)》項(xiàng)目八類與對(duì)象Contents類的定義和創(chuàng)建實(shí)例類中屬性和方法構(gòu)造方法和析構(gòu)方法類的定義PART01根據(jù)操作數(shù)據(jù)的函數(shù)或語句塊來設(shè)計(jì)程序的,稱為面向過程的編程。面向?qū)ο缶幊獭狾bjectOrientedProgramming,簡稱OOP,是一種程序設(shè)計(jì)思想。OOP把對(duì)象作為程序的基本單元,一個(gè)對(duì)象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。在Python中,所有數(shù)據(jù)類型都可以視為對(duì)象,當(dāng)然也可以自定義對(duì)象。自定義的對(duì)象數(shù)據(jù)類型就是面向?qū)ο笾械念悾–lass)的概念。面向?qū)ο?/p>
類和對(duì)象的關(guān)系即數(shù)據(jù)類型與變量的關(guān)系根據(jù)一個(gè)類可以創(chuàng)建多個(gè)對(duì)象,而只能是某一個(gè)類的對(duì)象。類規(guī)定了可以用于存儲(chǔ)什么數(shù)據(jù),而對(duì)象用于每個(gè)對(duì)象實(shí)際存儲(chǔ)數(shù)據(jù),每個(gè)對(duì)象可存儲(chǔ)不同的數(shù)據(jù)。類與對(duì)象
例如,有一個(gè)學(xué)生類,其中包括學(xué)號(hào)和姓名兩個(gè)屬性,則根據(jù)學(xué)生類可以創(chuàng)建多個(gè)學(xué)生對(duì)象,每個(gè)學(xué)生對(duì)象可以具有不同的學(xué)號(hào)和姓名信息。類與對(duì)象
在一個(gè)類中,包含屬性和各種方法屬性對(duì)應(yīng)一個(gè)類可以用來保存哪些數(shù)據(jù)方法對(duì)應(yīng)一個(gè)類可以支持哪些操作(即數(shù)據(jù)處理)類的定義形式多樣可以直接創(chuàng)建新的類也可以基于一個(gè)或多個(gè)已有的類創(chuàng)建新的類可以創(chuàng)建一個(gè)空的類,然后再動(dòng)態(tài)添加屬性和方法也可以在創(chuàng)建類的同時(shí)設(shè)置屬性和方法類的定義
class類名:
語句1
語句2……
語句N類的定義形式如下所示:1 classStudent:#定義一個(gè)名字為Student的類2 pass#一個(gè)空語句,起到占位作用,表示Student類中沒有任何屬性和方法下面是一個(gè)最簡單的類的定義方法,即定義一個(gè)空類。類的定義
創(chuàng)建實(shí)例PART02創(chuàng)建實(shí)例【任務(wù)描述】創(chuàng)建一個(gè)類根據(jù)類創(chuàng)建一個(gè)實(shí)例【關(guān)鍵步驟】創(chuàng)建一個(gè)類根據(jù)類創(chuàng)建一個(gè)實(shí)例示例01
類名(參數(shù)表)定義了一個(gè)類后,就可以創(chuàng)建該類的實(shí)例對(duì)象,其語法格式如下所示:1 classStudent:#定義一個(gè)名字為Student的類2 pass#一個(gè)空語句,起到占位作用,表示Student類中沒有任何屬性和方法3 if__name__=='__main__':4 stu=Student()#創(chuàng)建Student類的對(duì)象,并將創(chuàng)建的對(duì)象賦給變量stu5 print(stu)#輸出stu其中,參數(shù)表是指創(chuàng)建對(duì)象時(shí)傳入的參數(shù)。下面給出不傳遞參數(shù)情況下創(chuàng)建對(duì)象的程序示例程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:<__main__.Studentobjectat0x00000216EE7DF0F0>從輸出結(jié)果中可以看到,stu是Student類的對(duì)象,其地址為0x00000216EE7DF0F0。創(chuàng)建實(shí)例示例01
類屬性和普通方法的定義及其訪問PART031 classStudent:#定義Student類2 name='Unknown'#定義Student類中有一個(gè)name屬性屬性即對(duì)應(yīng)一個(gè)類對(duì)象可以保存的數(shù)據(jù)??梢灾苯釉诙x類時(shí)指定該類的屬性,即類屬性。類名或?qū)ο竺?屬性名對(duì)類屬性的訪問,既可以直接通過類名訪問,也可以通過該類的對(duì)象訪問類屬性定義及其訪問
類屬性定義及其訪問【任務(wù)描述】了解類屬性定義及其訪問【關(guān)鍵步驟】了解類屬性定義及其訪問示例02
1 classStudent:#定義Student類2 name='Unknown'#定義Student類中有一個(gè)name屬性3 if__name__=='__main__':4 print('第4行輸出:',S)5 stu1=Student()#創(chuàng)建Student類對(duì)象stu16 stu2=Student()#創(chuàng)建Student類對(duì)象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í)行程序后,則在屏幕上會(huì)輸出如下結(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類中有一個(gè)name屬性3 if__name__=='__main__':4 stu1=Student()#定義Student類對(duì)象stu15 stu2=Student()#定義Student類對(duì)象stu26 stu1.age=19#為對(duì)象stu1動(dòng)態(tài)綁定新的屬性age7 print('stu1姓名:%s,年齡:%d'%(,stu1.age))#輸出姓名和年齡8 #print('stu2年齡:'%stu2.age)#取消注釋則該語句會(huì)報(bào)錯(cuò)9 #print('使用類名訪問年齡屬性:'%Student.age)#取消注釋則該語句會(huì)報(bào)錯(cuò)Python作為一種動(dòng)態(tài)語言,除了可以在定義類時(shí)指定類屬性外,還可以動(dòng)態(tài)地為已經(jīng)創(chuàng)建的對(duì)象綁定新的屬性。執(zhí)行程序后,則在屏幕上會(huì)輸出如下結(jié)果:姓名:Unknown,年齡:19類屬性定義及其訪問示例02
類中的方法實(shí)際上就是執(zhí)行某種數(shù)據(jù)處理功能的函數(shù)。與普通函數(shù)定義一樣,類中的方法在定義時(shí)也需要使用def關(guān)鍵字。類中的方法分為兩類:普通方法和內(nèi)置方法普通方法需要通過類的實(shí)例對(duì)象根據(jù)方法名調(diào)用內(nèi)置方法是在特定情況下由系統(tǒng)自動(dòng)執(zhí)行類中普通方法定義及調(diào)用
實(shí)例對(duì)象名.方法名(實(shí)參列表)在定義類的普通方法時(shí),第一個(gè)參數(shù)需要對(duì)應(yīng)調(diào)用方法時(shí)所使用的實(shí)例對(duì)象(一般命名為self,但也可以改為其他名字)。當(dāng)使用一個(gè)實(shí)例對(duì)象調(diào)用類的普通方法時(shí),其語法格式為:類中普通方法定義及調(diào)用
類中普通方法定義及調(diào)用【任務(wù)描述】了解類中普通方法定義及調(diào)用【關(guān)鍵步驟】了解類中普通方法定義及調(diào)用示例03
1 classStudent:#定義Student類2 name='Unknown'#定義Student類中有一個(gè)name屬性3 defSetName(self,newname):#定義類的普通方法SetName4 =newname#將self對(duì)應(yīng)實(shí)例對(duì)象中的name屬性值賦為newname5 defPrintName(self):#定義類的普通方法PrintName6 print('姓名:%s'%)#輸出self對(duì)應(yīng)實(shí)例對(duì)象中的name屬性值7 if__name__=='__main__':8 stu1=Student()#定義Student類對(duì)象stu19 stu2=Student()#定義Student類對(duì)象stu210 stu1.SetName('李曉明')#通過stu1對(duì)象調(diào)用SetName方法11 stu2.SetName('馬紅')#通過stu1對(duì)象調(diào)用SetName方法12 stu1.PrintName()#通過stu1對(duì)象調(diào)用PrintName方法13 stu2.PrintName()#通過stu2對(duì)象調(diào)用PrintName方法14 #Student.SetName('未知')#取消前面的注釋,則會(huì)有系統(tǒng)報(bào)錯(cuò)信息15 #Student.PrintName()#取消前面的注釋,則會(huì)有系統(tǒng)報(bào)錯(cuò)信息在通過類的實(shí)例對(duì)象調(diào)用類中的普通方法時(shí),并不需要傳入self參數(shù)的值,self會(huì)自動(dòng)對(duì)應(yīng)調(diào)用該方法時(shí)所使用的對(duì)象。類中普通方法定義及調(diào)用示例03
私有屬性PART04私有屬性【任務(wù)描述】了解私有屬性定義及調(diào)用【關(guān)鍵步驟】了解私有屬性定義及調(diào)用示例04
1 classStudent:#定義Student類2 name='未知'#定義Student類中有一個(gè)name屬性3 __id='未知'#定義Student類中有一個(gè)__id私有屬性4 defSetInfo(self,newname,newid):#定義SetInfo函數(shù)5 =newname#將self對(duì)應(yīng)實(shí)例對(duì)象的name屬性賦為newname6 self.__id=newid#將self對(duì)應(yīng)實(shí)例對(duì)象的__id屬性賦為newid7 defPrintInfo(self):#定義PrintInfo函數(shù)8 print('姓名:%s,身份證號(hào):%s'%(,self.__id))7 if__name__=='__main__':8 stu=Student()#定義Student類對(duì)象stu9 stu.SetInfo('李曉明','120XXXXXXXXXXXXXXX')#通過stu調(diào)用SetInfo方法10 stu.PrintInfo()#通過stu對(duì)象調(diào)用PrintInfo方法11 #print('身份證號(hào):%s'%stu.__id)#取消前面的注釋,則程序會(huì)報(bào)錯(cuò)私有屬性,是指在類內(nèi)可以直接訪問、而在類外無法直接訪問的屬性。私有屬性名是以__(兩個(gè)下劃線)開頭。私有屬性示例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對(duì)應(yīng)對(duì)象的name屬性賦值為“未知”5 defPrintInfo(self):#定義普通方法PrintInfo6 print('姓名:%s'%)#輸出姓名信息7 if__name__=='__main__':8 stu=Student()#創(chuàng)建Student類對(duì)象stu,自動(dòng)執(zhí)行構(gòu)造方法9 stu.PrintInfo()#通過stu對(duì)象調(diào)用PrintInfo方法構(gòu)造方法是Python類中的內(nèi)置方法之一,它的方法名為__init__,在創(chuàng)建一個(gè)類對(duì)象時(shí)會(huì)自動(dòng)執(zhí)行,負(fù)責(zé)完成新創(chuàng)建對(duì)象的初始化工作。執(zhí)行程序后,則在屏幕上會(huì)輸出:構(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對(duì)應(yīng)對(duì)象的name屬性賦為形參name的值5 defPrintInfo(self):#定義普通方法PrintInfo6 print('姓名:%s'%)#輸出姓名信息7 if__name__=='__main__':8 stu=Student('李曉明')#創(chuàng)建Student類對(duì)象stu,自動(dòng)執(zhí)行構(gòu)造方法9 stu.PrintInfo()#通過stu對(duì)象調(diào)用PrintInfo方法構(gòu)造方法中,除了self,也可以設(shè)置其他參數(shù)。執(zhí)行程序后,則在屏幕上會(huì)輸出:構(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對(duì)應(yīng)對(duì)象的name屬性賦為形參name的值5 defPrintInfo(self):#定義普通方法PrintInfo6 print('姓名:%s'%)#輸出姓名信息7 if__name__=='__main__':8 stu1=Student()#創(chuàng)建Student類對(duì)象stu1,自動(dòng)執(zhí)行構(gòu)造方法9 stu2=Student('李曉明')#創(chuàng)建Student類對(duì)象stu2,自動(dòng)執(zhí)行構(gòu)造方法10 stu1.PrintInfo()#通過stu1對(duì)象調(diào)用PrintInfo方法11 stu2.PrintInfo()#通過stu1對(duì)象調(diào)用PrintInfo方法另外,構(gòu)造方法也可以設(shè)置默認(rèn)參數(shù)。執(zhí)行程序后,則在屏幕上會(huì)輸出:構(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對(duì)應(yīng)對(duì)象的name屬性賦值為形參name的值4 print('姓名為%s的對(duì)象被創(chuàng)建!'%)5 def__del__(self):#定義析構(gòu)方法6 print('姓名為%s的對(duì)象被銷毀!'%)7 deffunc(name):8 stu=Student(name)#創(chuàng)建Student類對(duì)象stu9 if__name__=='__main__':10 stu1=Student('李曉明')#創(chuàng)建Student類對(duì)象stu111 stu2=Student('馬紅')#創(chuàng)建Student類對(duì)象stu212 delstu2#使用del刪除stu2對(duì)象13 func('張剛')#調(diào)用func函數(shù)析構(gòu)方法是類的另一個(gè)內(nèi)置方法,它的方法名為__del__,在銷毀一個(gè)類對(duì)象時(shí)會(huì)自動(dòng)執(zhí)行,負(fù)責(zé)完成待銷毀對(duì)象的資源清理工作,如關(guān)閉文件等。構(gòu)造方法與析構(gòu)方法示例05
執(zhí)行程序后,則在屏幕上會(huì)輸出:姓名為李曉明的對(duì)象被創(chuàng)建!姓名為馬紅的對(duì)象被創(chuàng)建!姓名為馬紅的對(duì)象被銷毀!姓名為張剛的對(duì)象被創(chuàng)建!姓名為張剛的對(duì)象被銷毀!構(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對(duì)應(yīng)對(duì)象的real屬性賦值為形參real的值4 self.image=image#將self對(duì)應(yīng)對(duì)象的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類對(duì)象c9 print(c)#輸出c調(diào)用str函數(shù)對(duì)類對(duì)象進(jìn)行處理時(shí)或者調(diào)用Python內(nèi)置函數(shù)format()和print()時(shí)自動(dòng)執(zhí)行,__str__方法的返回值必須是字符串。執(zhí)行程序后,則在屏幕上會(huì)輸出:3.2+5.3i__str__
內(nèi)置方法功能描述__gt__(self,other)進(jìn)行self>other運(yùn)算時(shí)自動(dòng)執(zhí)行__lt__(self,other)進(jìn)行self<other運(yùn)算時(shí)自動(dòng)執(zhí)行__ge__(self,other)進(jìn)行self>=other運(yùn)算時(shí)自動(dòng)執(zhí)行__le__(self,other)進(jìn)行self<=other運(yùn)算時(shí)自動(dòng)執(zhí)行__eq__(self,other)進(jìn)行self==other運(yùn)算時(shí)自動(dòng)執(zhí)行__ne__(self,other)進(jìn)行self!=other運(yùn)算時(shí)自動(dòng)執(zhí)行比較運(yùn)算的內(nèi)置方法
1 classStudent:#定義Student類2 def__init__(self,name,age):#定義構(gòu)造方法3 =name#將self對(duì)應(yīng)對(duì)象的name屬性賦為形參name的值4 self.age=age#將self對(duì)應(yīng)對(duì)象的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類對(duì)象stu113 stu2=Student('馬紅',20)#定義Student類
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度影視后期制作與剪輯服務(wù)合同范本4篇
- 2025年度專業(yè)樹木種植與生態(tài)旅游開發(fā)合同4篇
- 2025年度夏令營教育成果評(píng)估與分析合同4篇
- 把羊包給他人的合同
- 2025年度林業(yè)資源開發(fā)與合作經(jīng)營合同模板3篇
- 2025年度牛只運(yùn)輸與飼料配送綜合性服務(wù)合同4篇
- 2025年度內(nèi)墻涂料工程舊房翻新改造施工合同2篇
- 二零二五年度煤礦資源整合項(xiàng)目合同書4篇
- 2025版民宿布草租賃與民宿客棧特色文化打造合同4篇
- 2025年度股權(quán)轉(zhuǎn)讓與客戶關(guān)系維護(hù)合同范本3篇
- 9.1增強(qiáng)安全意識(shí) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊
- 《化工設(shè)備機(jī)械基礎(chǔ)(第8版)》全套教學(xué)課件
- 人教版八年級(jí)數(shù)學(xué)下冊舉一反三專題17.6勾股定理章末八大題型總結(jié)(培優(yōu)篇)(學(xué)生版+解析)
- 2024屆上海高考語文課內(nèi)古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 2024年度-美團(tuán)新騎手入門培訓(xùn)
- 初中數(shù)學(xué)要背誦記憶知識(shí)點(diǎn)(概念+公式)
- 駕照體檢表完整版本
- 農(nóng)產(chǎn)品農(nóng)藥殘留檢測及風(fēng)險(xiǎn)評(píng)估
- 農(nóng)村高中思想政治課時(shí)政教育研究的中期報(bào)告
- 20100927-宣化上人《愣嚴(yán)咒句偈疏解》(簡體全)
評(píng)論
0/150
提交評(píng)論