版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python面向對象基礎人生苦短,我學Python!面向對象編程思想面向對象基本概念添加和獲取對象屬性魔術方法面向對象案例理解面向對象的編程思想掌握面向對象的兩大要素:類和對象掌握對象屬性的設置(添加和獲?。┱莆漳g方法的使用掌握面向對象案例編寫面向對象編程思想01所謂的編程思想,就是人們利用計算機來解決實際問題的一種思維方式,常見的編程思想有面向過程和面向對象,很多計算機語言的語法各不相同,但是它們基本的編程思想?yún)s是差不多的,而Python是同時支持面向對象和面向過程的編程語言!面向對象編程思想1、什么是編程思想傳統(tǒng)的面向過程的編程思想總結起來就八個字——自頂向下,逐步細化!→將要實現(xiàn)的功能描述為一個從開始到結束按部就班的連續(xù)的“步驟”→依次逐步完成這些步驟,如果某一個步驟的難度較大,又可以將該步驟再次細化為若干個子步驟,以此類推,一直到結尾并得到我們想要的結果程序的主體是函數(shù),一個函數(shù)就是一個封裝起來的模塊,可以實現(xiàn)特定的功能,程序的各個子步驟也往往就是通過相關的函數(shù)來完成的!從而實現(xiàn)代碼的重用與模塊化編程舉個栗子:大家以來傳智教育報名學習這件事情,可以分成哪些步驟?開始→學員提出報名,提供相關材料→學生繳納學費,獲得繳費憑證→教師憑借學生繳費憑證進行分配班級→班級增加學生信息→結束所謂的面向過程,就是將上面分析好了的步驟,依次執(zhí)行就行了!面向對象編程思想2、面向過程的編程思想所謂的面向對象,就是在編程的時候盡可能的去模擬現(xiàn)實世界!在現(xiàn)實世界中,任何一個操作或者業(yè)務邏輯的實現(xiàn)都需要一個實體來完成!實體就是動作的支配者,沒有實體,也就沒有動作發(fā)生!思考:上面的整個報名過程,都有哪些動詞?提出、提供、繳納、獲得、分配、增加有動詞就一定有實現(xiàn)這個動作的實體!所謂的模擬現(xiàn)實世界,就是使計算機的編程語言在解決相關業(yè)務邏輯的時候,與真實的業(yè)務邏輯的發(fā)生保持一致,需要使任何一個動作的發(fā)生都存在一個支配給該動作的一個實體(主體),因為在現(xiàn)實世界中,任何一個功能的實現(xiàn)都可以看做是一個一個的實體在發(fā)揮其各自的“功能”(能力)并在內部進行協(xié)調有序的調用過程!面向對象編程思想3、面向對象的編程思想☆第一步:分析哪些動作是由哪些實體發(fā)出的學生提出報名學生提供相關資料學生繳費機構收費教師分配教室班級增加學生信息于是,在整個過程中,一共有四個實體:學生、機構、教師、班級!在現(xiàn)實中的一個具體的實體,就是計算機編程中的一個對象!面向對象編程思想4、舉個栗子:面向對象實現(xiàn)報名案例☆第二步:定義這些實體,為其增加相應的屬性和功能。屬性就是實體固有的某些特征特性信息,在面向對象的術語中,屬性就是以前的變量。比如一個人的屬性有:身高、體重、三圍、姓名、年齡、學歷、電話、籍貫、畢業(yè)院校等一個手機的屬性有:價格、品牌、操作系統(tǒng)、顏色、尺寸等功能就是就是實體可以完成的動作,在面向對象的術語中,功能就是封裝成了函數(shù)或方法面向對象編程思想4、舉個栗子:面向對象實現(xiàn)報名案例面向對象編程思想4、舉個栗子:面向對象實現(xiàn)報名案例☆第三步:讓實體去執(zhí)行相應的功能或動作學生提出報名學生提供相關資料教師登記學生信息學生繳費機構收費教師分配教室班級增加學生信息面向對象編程思想5、舉個栗子:面向對象實現(xiàn)報名案例以前寫代碼,首先想到的是需要實現(xiàn)什么功能——調用系統(tǒng)函數(shù),或者自己自定義函數(shù),然后按部就班的執(zhí)行就行了!以后寫代碼,首先想到的是應該由什么樣的主體去實現(xiàn)什么樣的功能,再把該主體的屬性和功能統(tǒng)一的進行封裝,最后才去實現(xiàn)各個實體的功能。注意:面向對象并不是一種技術,而是一種思想,是一種解決問題的最基本的思維方式!所以,面向對象的核心思想是:不僅僅是簡單的將功能進行封裝(封裝成函數(shù)),更是對調用該功能的主體進行封裝,實現(xiàn)某個主體擁有多個功能,在使用的過程中,先得到對應的主體,再使用主體去實現(xiàn)相關的功能!面向對象編程思想6、面向過程向面向對象思想遷移一個面試題:面向過程和面向對象的區(qū)別?①都可以實現(xiàn)代碼重用和模塊化編程,面向對象的模塊化更深,數(shù)據(jù)也更封閉和安全②面向對象的思維方式更加貼近現(xiàn)實生活,更容易解決大型的復雜的業(yè)務邏輯③從前期開發(fā)的角度來看,面向對象比面向過程要更復雜,但是從維護和擴展的角度來看,面向對象要遠比面向過程簡單?、苊嫦蜻^程的代碼執(zhí)行效率比面向對象高面向對象編程思想6、面試題面向對象基本概念02OOA:面向對象分析OOD:面向對象設計OOP:面向對象編程面向對象基本概念1、面向對象基本概念OOAOODOOP對象,object,現(xiàn)實業(yè)務邏輯的一個動作實體就對應著OOP編程中的一個對象!所以:①對象使用屬性(property)保存數(shù)據(jù)?、趯ο笫褂梅椒ǎ╩ethod)管理數(shù)據(jù)!面向對象基本概念2、對象的概念對象如何產(chǎn)生?又是如何規(guī)定對象的屬性和方法呢?答:在Python中,采用類(class)來生產(chǎn)對象,用類來規(guī)定對象的屬性和方法!也就是說,在Python中,要想得到對象,必須先有類!為什么要引入類的概念?類本來就是對現(xiàn)實世界的一種模擬,在現(xiàn)實生活中,任何一個實體都有一個類別,類就是具有相同或相似屬性和動作的一組實體的集合!所以,在Python中,對象是指現(xiàn)實中的一個具體的實體,而既然現(xiàn)實中的實體都有一個類別,所以,OOP中的對象也都應該有一個類!一個對象的所有應該具有特征特性信息,都是由其所屬的類來決定的,但是每個對象又可以具有不同的特征特性信息,比如,我自己(人類)這個對象,名字叫老王,性別男,會寫代碼,會教書;另一個對象(人類)可能叫趙薇,性別女,會演戲,會唱歌!面向對象基本概念3、類的概念Python3中類分為:經(jīng)典類和新式類經(jīng)典類:不由任意內置類型派生出的類,稱之為經(jīng)典類新式類:這就是一個類,只不過里面什么都沒有!其中,類名不區(qū)分大小寫,遵守一般的標識符的命名規(guī)則(以字母、數(shù)字和下劃線構成,并且不能以數(shù)字開頭),一般為了和方法名相區(qū)分,類名的首字母一般大寫?。ù篑劮宸ǎ┟嫦驅ο蠡靖拍?、類的定義class類名:
代碼
......class類名():
代碼
......舉個例子:定義"人"類面向對象基本概念4、類的定義classPerson():defeat(self):print('我喜歡吃零食')defdrink(self):print('我喜歡喝果汁')類的實例化就是通過類得到對象!類只是對象的一種規(guī)范,類本身基本上什么都做不了,必須利用類得到對象,這個過程就叫作類的實例化!基本語法:案例:實例化Person類,生成p1對象面向對象基本概念5、類的實例化(創(chuàng)建對象)對象名=類名()#創(chuàng)建對象p1=Person()#<__main__.Personobjectat0x1013ecf50>print(p1)#p1對象調用實例方法p1.eat()p1.drink()在類中,有一個特殊關鍵字self,其指向類實例化對象本身。注意:打印對象和self得到的結果是一致的,都是當前對象的內存中存儲地址。面向對象基本概念6、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):#類里面獲取實例屬性
print(f'姓名:{}')print(f'年齡:{self.age}')print(f'地址:{self.address}')#2.創(chuàng)建對象p1=Person()#3.添加屬性='老王'p1.age=18p1.address='北京'p1.print_info()魔術方法04在Python中,__xxx__()的函數(shù)叫做魔法方法,指的是具有特殊功能的函數(shù)。魔術方法1、什么是魔術方法思考:人的姓名、年齡等信息都是與生俱來的屬性,可不可以在生產(chǎn)過程中就賦予這些屬性呢?答:可以,使用__init__()方法,其作用:實例化對象時,連帶其中的參數(shù),會一并傳給__init__函數(shù)自動并執(zhí)行它。__init__()函數(shù)的參數(shù)列表會在開頭多出一項,它永遠指代新建的那個實例對象,Python語法要求這個參數(shù)必須要有,名稱為self。魔術方法2、__init__()方法classPerson():
#定義初始化功能的函數(shù)
def__init__(self):#添加實例屬性
='老王'self.age=18self.address='北京'
defprint_info(self):#類里面調用實例屬性
print(f'姓名:{},年齡:{self.age},地址:{self.address}')
p1=Person()p1.print_info()①__init__()方法,在創(chuàng)建一個對象時默認被調用,不需要手動調用②__init__(self)中的self參數(shù),不需要開發(fā)者傳遞,python解釋器會自動把當前的對象引用傳遞過去。注意事項雖然我們已經(jīng)可以通過__init__實現(xiàn)類屬性的初始化操作,但是以上案例還存在一個問題,所有實例屬性都擁有相同的name、age以及address,這顯然是不對的。應該如何解決呢?答:使用帶參數(shù)的__init__()魔術方法3、帶參數(shù)的__init__()方法classPerson():
#定義初始化功能的函數(shù)
def__init__(self,name,age,address):#添加實例屬性
=nameself.age=ageself.address=address
defprint_info(self):#類里面調用實例屬性
print(f'姓名:{},年齡:{self.age},地址:{self.address}')
p1=Person('老王',18,'北京')p1.print_info()p2=Person('老李',20,'深圳')p2.print_info()當使用print輸出對象的時候,默認打印對象的內存地址。如果類定義了`__str__`方法,那么就會打印從在這個方法中return的數(shù)據(jù)。魔術方法4、__str__()方法classPerson():
#定義初始化功能的函數(shù)
def__init__(self,name,age,address):#添加實例屬性
=nameself.age=ageself.address=address
def__str__(self):"""返回一個對象的描述信息"""returnf'姓名:{},年齡:{self.age},地址:{self.address}'
p1=Person('老王',18,'北京')print(p1)當刪除對象時,python解釋器也會默認調用__del__()方法。魔術方法5、__del__()方法classPerson():
#定義初始化功能的函數(shù)
def__init__(self,name,age,address):#添加實例屬性
=nameself.age=ageself.address=address
def__del__(self):print(f'{self}對象已經(jīng)被刪除')
p1=Person('老王',18,'北京')#<__main__.Personobjectat0x101af8f90>對象已經(jīng)被刪除delp1面向對象案例05需求:定義學員信息類,包含姓名、成績屬性,定義成績打印方法(90分及以上顯示優(yōu)秀,80分及以上顯示良好,70分及以上顯示中等,60分及以上顯示合格,60分以下顯示不及格)面向對象案例1、學員成績案例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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年合資合約示范
- 2025年分期付款醫(yī)療合同
- 2025年家庭財產(chǎn)保險的保險期限說明
- 2025版鋁塑門窗行業(yè)市場分析與競爭情報服務合同2篇
- 2025版太陽能光伏發(fā)電站安全防護與應急預案合同3篇
- 2025版定制家具原材料采購合同范本4篇
- 2025年度政府機關打印機設備采購與維保合同3篇
- 個人與國有企業(yè)借款合同范本(2024版)2篇
- 二零二五年度旅游度假區(qū)租賃權轉讓及配套設施合同
- 2025年度特色餐廳加盟經(jīng)營合同樣本
- 2025水利云播五大員考試題庫(含答案)
- 中藥飲片驗收培訓
- 手術室??谱o士工作總結匯報
- DB34T 1831-2013 油菜收獲與秸稈粉碎機械化聯(lián)合作業(yè)技術規(guī)范
- 創(chuàng)傷處理理論知識考核試題及答案
- 2019級水電站動力設備專業(yè)三年制人才培養(yǎng)方案
- 肝素誘導的血小板減少癥培訓課件
- 抖音認證承諾函
- 高等數(shù)學(第二版)
- 四合一體系基礎知識培訓課件
- ICD-9-CM-3手術與操作國家臨床版亞目表
評論
0/150
提交評論