筆記01 python面向?qū)ο蠡A(chǔ)_第1頁
筆記01 python面向?qū)ο蠡A(chǔ)_第2頁
筆記01 python面向?qū)ο蠡A(chǔ)_第3頁
筆記01 python面向?qū)ο蠡A(chǔ)_第4頁
筆記01 python面向?qū)ο蠡A(chǔ)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Python面向?qū)ο蠡A(chǔ)人生苦短,我學(xué)Python!面向?qū)ο缶幊趟枷朊嫦驅(qū)ο蠡靖拍钐砑雍瞳@取對象屬性魔術(shù)方法面向?qū)ο蟀咐斫饷嫦驅(qū)ο蟮木幊趟枷胝莆彰嫦驅(qū)ο蟮膬纱笠兀侯惡蛯ο笳莆諏ο髮傩缘脑O(shè)置(添加和獲?。┱莆漳g(shù)方法的使用掌握面向?qū)ο蟀咐帉懨嫦驅(qū)ο缶幊趟枷?1所謂的編程思想,就是人們利用計(jì)算機(jī)來解決實(shí)際問題的一種思維方式,常見的編程思想有面向過程和面向?qū)ο?,很多?jì)算機(jī)語言的語法各不相同,但是它們基本的編程思想?yún)s是差不多的,而Python是同時(shí)支持面向?qū)ο蠛兔嫦蜻^程的編程語言!面向?qū)ο缶幊趟枷?、什么是編程思想傳統(tǒng)的面向過程的編程思想總結(jié)起來就八個(gè)字——自頂向下,逐步細(xì)化!→將要實(shí)現(xiàn)的功能描述為一個(gè)從開始到結(jié)束按部就班的連續(xù)的“步驟”→依次逐步完成這些步驟,如果某一個(gè)步驟的難度較大,又可以將該步驟再次細(xì)化為若干個(gè)子步驟,以此類推,一直到結(jié)尾并得到我們想要的結(jié)果程序的主體是函數(shù),一個(gè)函數(shù)就是一個(gè)封裝起來的模塊,可以實(shí)現(xiàn)特定的功能,程序的各個(gè)子步驟也往往就是通過相關(guān)的函數(shù)來完成的!從而實(shí)現(xiàn)代碼的重用與模塊化編程舉個(gè)栗子:大家以來傳智教育報(bào)名學(xué)習(xí)這件事情,可以分成哪些步驟?開始→學(xué)員提出報(bào)名,提供相關(guān)材料→學(xué)生繳納學(xué)費(fèi),獲得繳費(fèi)憑證→教師憑借學(xué)生繳費(fèi)憑證進(jìn)行分配班級→班級增加學(xué)生信息→結(jié)束所謂的面向過程,就是將上面分析好了的步驟,依次執(zhí)行就行了!面向?qū)ο缶幊趟枷?、面向過程的編程思想所謂的面向?qū)ο?,就是在編程的時(shí)候盡可能的去模擬現(xiàn)實(shí)世界!在現(xiàn)實(shí)世界中,任何一個(gè)操作或者業(yè)務(wù)邏輯的實(shí)現(xiàn)都需要一個(gè)實(shí)體來完成!實(shí)體就是動(dòng)作的支配者,沒有實(shí)體,也就沒有動(dòng)作發(fā)生!思考:上面的整個(gè)報(bào)名過程,都有哪些動(dòng)詞?提出、提供、繳納、獲得、分配、增加有動(dòng)詞就一定有實(shí)現(xiàn)這個(gè)動(dòng)作的實(shí)體!所謂的模擬現(xiàn)實(shí)世界,就是使計(jì)算機(jī)的編程語言在解決相關(guān)業(yè)務(wù)邏輯的時(shí)候,與真實(shí)的業(yè)務(wù)邏輯的發(fā)生保持一致,需要使任何一個(gè)動(dòng)作的發(fā)生都存在一個(gè)支配給該動(dòng)作的一個(gè)實(shí)體(主體),因?yàn)樵诂F(xiàn)實(shí)世界中,任何一個(gè)功能的實(shí)現(xiàn)都可以看做是一個(gè)一個(gè)的實(shí)體在發(fā)揮其各自的“功能”(能力)并在內(nèi)部進(jìn)行協(xié)調(diào)有序的調(diào)用過程!面向?qū)ο缶幊趟枷?、面向?qū)ο蟮木幊趟枷搿畹谝徊剑悍治瞿男﹦?dòng)作是由哪些實(shí)體發(fā)出的學(xué)生提出報(bào)名學(xué)生提供相關(guān)資料學(xué)生繳費(fèi)機(jī)構(gòu)收費(fèi)教師分配教室班級增加學(xué)生信息于是,在整個(gè)過程中,一共有四個(gè)實(shí)體:學(xué)生、機(jī)構(gòu)、教師、班級!在現(xiàn)實(shí)中的一個(gè)具體的實(shí)體,就是計(jì)算機(jī)編程中的一個(gè)對象!面向?qū)ο缶幊趟枷?、舉個(gè)栗子:面向?qū)ο髮?shí)現(xiàn)報(bào)名案例☆第二步:定義這些實(shí)體,為其增加相應(yīng)的屬性和功能。屬性就是實(shí)體固有的某些特征特性信息,在面向?qū)ο蟮男g(shù)語中,屬性就是以前的變量。比如一個(gè)人的屬性有:身高、體重、三圍、姓名、年齡、學(xué)歷、電話、籍貫、畢業(yè)院校等一個(gè)手機(jī)的屬性有:價(jià)格、品牌、操作系統(tǒng)、顏色、尺寸等功能就是就是實(shí)體可以完成的動(dòng)作,在面向?qū)ο蟮男g(shù)語中,功能就是封裝成了函數(shù)或方法面向?qū)ο缶幊趟枷?、舉個(gè)栗子:面向?qū)ο髮?shí)現(xiàn)報(bào)名案例面向?qū)ο缶幊趟枷?、舉個(gè)栗子:面向?qū)ο髮?shí)現(xiàn)報(bào)名案例☆第三步:讓實(shí)體去執(zhí)行相應(yīng)的功能或動(dòng)作學(xué)生提出報(bào)名學(xué)生提供相關(guān)資料教師登記學(xué)生信息學(xué)生繳費(fèi)機(jī)構(gòu)收費(fèi)教師分配教室班級增加學(xué)生信息面向?qū)ο缶幊趟枷?、舉個(gè)栗子:面向?qū)ο髮?shí)現(xiàn)報(bào)名案例以前寫代碼,首先想到的是需要實(shí)現(xiàn)什么功能——調(diào)用系統(tǒng)函數(shù),或者自己自定義函數(shù),然后按部就班的執(zhí)行就行了!以后寫代碼,首先想到的是應(yīng)該由什么樣的主體去實(shí)現(xiàn)什么樣的功能,再把該主體的屬性和功能統(tǒng)一的進(jìn)行封裝,最后才去實(shí)現(xiàn)各個(gè)實(shí)體的功能。注意:面向?qū)ο蟛⒉皇且环N技術(shù),而是一種思想,是一種解決問題的最基本的思維方式!所以,面向?qū)ο蟮暮诵乃枷胧牵翰粌H僅是簡單的將功能進(jìn)行封裝(封裝成函數(shù)),更是對調(diào)用該功能的主體進(jìn)行封裝,實(shí)現(xiàn)某個(gè)主體擁有多個(gè)功能,在使用的過程中,先得到對應(yīng)的主體,再使用主體去實(shí)現(xiàn)相關(guān)的功能!面向?qū)ο缶幊趟枷?、面向過程向面向?qū)ο笏枷脒w移一個(gè)面試題:面向過程和面向?qū)ο蟮膮^(qū)別?①都可以實(shí)現(xiàn)代碼重用和模塊化編程,面向?qū)ο蟮哪K化更深,數(shù)據(jù)也更封閉和安全②面向?qū)ο蟮乃季S方式更加貼近現(xiàn)實(shí)生活,更容易解決大型的復(fù)雜的業(yè)務(wù)邏輯③從前期開發(fā)的角度來看,面向?qū)ο蟊让嫦蜻^程要更復(fù)雜,但是從維護(hù)和擴(kuò)展的角度來看,面向?qū)ο笠h(yuǎn)比面向過程簡單?、苊嫦蜻^程的代碼執(zhí)行效率比面向?qū)ο蟾呙嫦驅(qū)ο缶幊趟枷?、面試題面向?qū)ο蠡靖拍?2OOA:面向?qū)ο蠓治鯫OD:面向?qū)ο笤O(shè)計(jì)OOP:面向?qū)ο缶幊堂嫦驅(qū)ο蠡靖拍?、面向?qū)ο蠡靖拍頞OAOODOOP對象,object,現(xiàn)實(shí)業(yè)務(wù)邏輯的一個(gè)動(dòng)作實(shí)體就對應(yīng)著OOP編程中的一個(gè)對象!所以:①對象使用屬性(property)保存數(shù)據(jù)!②對象使用方法(method)管理數(shù)據(jù)!面向?qū)ο蠡靖拍?、對象的概念對象如何產(chǎn)生?又是如何規(guī)定對象的屬性和方法呢?答:在Python中,采用類(class)來生產(chǎn)對象,用類來規(guī)定對象的屬性和方法!也就是說,在Python中,要想得到對象,必須先有類!為什么要引入類的概念?類本來就是對現(xiàn)實(shí)世界的一種模擬,在現(xiàn)實(shí)生活中,任何一個(gè)實(shí)體都有一個(gè)類別,類就是具有相同或相似屬性和動(dòng)作的一組實(shí)體的集合!所以,在Python中,對象是指現(xiàn)實(shí)中的一個(gè)具體的實(shí)體,而既然現(xiàn)實(shí)中的實(shí)體都有一個(gè)類別,所以,OOP中的對象也都應(yīng)該有一個(gè)類!一個(gè)對象的所有應(yīng)該具有特征特性信息,都是由其所屬的類來決定的,但是每個(gè)對象又可以具有不同的特征特性信息,比如,我自己(人類)這個(gè)對象,名字叫老王,性別男,會(huì)寫代碼,會(huì)教書;另一個(gè)對象(人類)可能叫趙薇,性別女,會(huì)演戲,會(huì)唱歌!面向?qū)ο蠡靖拍?、類的概念Python3中類分為:經(jīng)典類和新式類經(jīng)典類:不由任意內(nèi)置類型派生出的類,稱之為經(jīng)典類新式類:這就是一個(gè)類,只不過里面什么都沒有!其中,類名不區(qū)分大小寫,遵守一般的標(biāo)識符的命名規(guī)則(以字母、數(shù)字和下劃線構(gòu)成,并且不能以數(shù)字開頭),一般為了和方法名相區(qū)分,類名的首字母一般大寫!(大駝峰法)面向?qū)ο蠡靖拍?、類的定義class類名:

代碼

......class類名():

代碼

......舉個(gè)例子:定義"人"類面向?qū)ο蠡靖拍?、類的定義classPerson():defeat(self):print('我喜歡吃零食')defdrink(self):print('我喜歡喝果汁')類的實(shí)例化就是通過類得到對象!類只是對象的一種規(guī)范,類本身基本上什么都做不了,必須利用類得到對象,這個(gè)過程就叫作類的實(shí)例化!基本語法:案例:實(shí)例化Person類,生成p1對象面向?qū)ο蠡靖拍?、類的實(shí)例化(創(chuàng)建對象)對象名=類名()#創(chuàng)建對象p1=Person()#<__main__.Personobjectat0x1013ecf50>print(p1)#p1對象調(diào)用實(shí)例方法p1.eat()p1.drink()在類中,有一個(gè)特殊關(guān)鍵字self,其指向類實(shí)例化對象本身。注意:打印對象和self得到的結(jié)果是一致的,都是當(dāng)前對象的內(nèi)存中存儲地址。面向?qū)ο蠡靖拍?、self#1.定義類classPerson():defeat(self):print('我喜歡吃零食')#<__main__.Personobjectat0x1058bced0>print(self)#2.創(chuàng)建對象p1=Person()#<__main__.Personobjectat0x1058bced0>print(p1)p1.eat()p2=Person()#<__main__.Personobjectat0x1058bcf50>print(p2)添加和獲取對象屬性03屬性即是特征,比如:人的姓名、年齡、身高、體重…都是對象的屬性。對象屬性既可以在類外面添加和獲取,也能在類里面添加和獲取。添加和獲取對象屬性1、什么是屬性基本語法:快速入門:添加和獲取對象屬性2、類外部添加對象屬性對象名.屬性名=值='老王'p1.age=18p1.address='北京'基本語法:快速入門:添加和獲取對象屬性3、類外面獲取對象屬性對象名.屬性名print(f'姓名:{}')print(f'年齡:{p1.age}')print(f'地址:{p1.address}')基本語法:快速入門:添加和獲取對象屬性4、類里面獲取對象屬性self.屬性名#1.定義類classPerson():defprint_info(self):#類里面獲取實(shí)例屬性

print(f'姓名:{}')print(f'年齡:{self.age}')print(f'地址:{self.address}')#2.創(chuàng)建對象p1=Person()#3.添加屬性='老王'p1.age=18p1.address='北京'p1.print_info()魔術(shù)方法04在Python中,__xxx__()的函數(shù)叫做魔法方法,指的是具有特殊功能的函數(shù)。魔術(shù)方法1、什么是魔術(shù)方法思考:人的姓名、年齡等信息都是與生俱來的屬性,可不可以在生產(chǎn)過程中就賦予這些屬性呢?答:可以,使用__init__()方法,其作用:實(shí)例化對象時(shí),連帶其中的參數(shù),會(huì)一并傳給__init__函數(shù)自動(dòng)并執(zhí)行它。__init__()函數(shù)的參數(shù)列表會(huì)在開頭多出一項(xiàng),它永遠(yuǎn)指代新建的那個(gè)實(shí)例對象,Python語法要求這個(gè)參數(shù)必須要有,名稱為self。魔術(shù)方法2、__init__()方法classPerson():

#定義初始化功能的函數(shù)

def__init__(self):#添加實(shí)例屬性

='老王'self.age=18self.address='北京'

defprint_info(self):#類里面調(diào)用實(shí)例屬性

print(f'姓名:{},年齡:{self.age},地址:{self.address}')

p1=Person()p1.print_info()①__init__()方法,在創(chuàng)建一個(gè)對象時(shí)默認(rèn)被調(diào)用,不需要手動(dòng)調(diào)用②__init__(self)中的self參數(shù),不需要開發(fā)者傳遞,python解釋器會(huì)自動(dòng)把當(dāng)前的對象引用傳遞過去。注意事項(xiàng)雖然我們已經(jīng)可以通過__init__實(shí)現(xiàn)類屬性的初始化操作,但是以上案例還存在一個(gè)問題,所有實(shí)例屬性都擁有相同的name、age以及address,這顯然是不對的。應(yīng)該如何解決呢?答:使用帶參數(shù)的__init__()魔術(shù)方法3、帶參數(shù)的__init__()方法classPerson():

#定義初始化功能的函數(shù)

def__init__(self,name,age,address):#添加實(shí)例屬性

=nameself.age=ageself.address=address

defprint_info(self):#類里面調(diào)用實(shí)例屬性

print(f'姓名:{},年齡:{self.age},地址:{self.address}')

p1=Person('老王',18,'北京')p1.print_info()p2=Person('老李',20,'深圳')p2.print_info()當(dāng)使用print輸出對象的時(shí)候,默認(rèn)打印對象的內(nèi)存地址。如果類定義了`__str__`方法,那么就會(huì)打印從在這個(gè)方法中return的數(shù)據(jù)。魔術(shù)方法4、__str__()方法classPerson():

#定義初始化功能的函數(shù)

def__init__(self,name,age,address):#添加實(shí)例屬性

=nameself.age=ageself.address=address

def__str__(self):"""返回一個(gè)對象的描述信息"""returnf'姓名:{},年齡:{self.age},地址:{self.address}'

p1=Person('老王',18,'北京')print(p1)當(dāng)刪除對象時(shí),python解釋器也會(huì)默認(rèn)調(diào)用__del__()方法。魔術(shù)方法5、__del__()方法classPerson():

#定義初始化功能的函數(shù)

def__init__(self,name,age,address):#添加實(shí)例屬性

=nameself.age=ageself.address=address

def__del__(self):print(f'{self}對象已經(jīng)被刪除')

p1=Person('老王',18,'北京')#<__main__.Personobjectat0x101af8f90>對象已經(jīng)被刪除delp1面向?qū)ο蟀咐?5需求:定義學(xué)員信息類,包含姓名、成績屬性,定義成績打印方法(90分及以上顯示優(yōu)秀,80分及以上顯示良好,70分及以上顯示中等,60分及以上顯示合格,60分以下顯示不及格)面向?qū)ο蟀咐?、學(xué)員成績案例classStudent():def__init__(self,name,score):=nameself.score=score

defprint_grade(self):ifself.score>=90:print(f'{},{self.score}分,成績優(yōu)秀')elifself.score>=80:print(f'{},{self.score}分,成績良好')elifself.score>=70

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論