Python基礎(chǔ)編程與實(shí)踐教學(xué)課件第6章-面向?qū)ο缶幊蘝第1頁(yè)
Python基礎(chǔ)編程與實(shí)踐教學(xué)課件第6章-面向?qū)ο缶幊蘝第2頁(yè)
Python基礎(chǔ)編程與實(shí)踐教學(xué)課件第6章-面向?qū)ο缶幊蘝第3頁(yè)
Python基礎(chǔ)編程與實(shí)踐教學(xué)課件第6章-面向?qū)ο缶幊蘝第4頁(yè)
Python基礎(chǔ)編程與實(shí)踐教學(xué)課件第6章-面向?qū)ο缶幊蘝第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章面向?qū)ο缶幊藽ONTENTS目錄6.1面向?qū)ο缶幊谈攀?16.2類與對(duì)象026.3成員屬性036.4成員方法046.5類的繼承056.1面向?qū)ο缶幊谈攀?.1.1面向?qū)ο蟮幕靖拍?.對(duì)象實(shí)現(xiàn)了數(shù)據(jù)和操作的結(jié)合,數(shù)據(jù)和操作封裝于對(duì)象這個(gè)統(tǒng)一體中。2.類類是對(duì)象的模板,實(shí)際上就是一種數(shù)據(jù)類型,一個(gè)類所包含的數(shù)據(jù)和方法用于描述一組對(duì)象的共同屬性和行為。3.消息發(fā)送一條消息至少要包括說(shuō)明接受消息的對(duì)象名、發(fā)送給該對(duì)象的消息名。4.封裝是指將對(duì)象的數(shù)據(jù)(屬性)和操作數(shù)據(jù)的過程(方法)結(jié)合起來(lái)所構(gòu)成的單元,只能通過類對(duì)外部提供的接口對(duì)該對(duì)象進(jìn)行各種操作。5.繼承是指在一個(gè)類的基礎(chǔ)上定義一個(gè)新的類,原有的類稱為基類,超類或父類,新生成的類稱為派生類或子類。6.多態(tài)是指一個(gè)名稱相同的方法產(chǎn)生了不同的動(dòng)作行為,即不同對(duì)象收到相同的消息時(shí)產(chǎn)生了不同的行為方式。6.1.2面向過程與面向?qū)ο蟮谋容^(1)面向過程編程方法是通過函數(shù)(或過程)來(lái)描述對(duì)數(shù)據(jù)的操作,但又將函數(shù)與其操作的數(shù)據(jù)分離開來(lái);面向?qū)ο蟪绦蛟O(shè)計(jì)方法將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一起,作為一個(gè)對(duì)象整體來(lái)處理。(2)面向過程編程方法以功能為中心來(lái)設(shè)計(jì)功能模塊,程序難以維護(hù);面向?qū)ο蟪绦蛟O(shè)計(jì)方法以數(shù)據(jù)為中心來(lái)描述系統(tǒng),數(shù)據(jù)相對(duì)于功能而言具有較強(qiáng)的穩(wěn)定性,因此程序更容易維護(hù)。(3)面向過程程序的控制流程由程序中預(yù)定順序來(lái)決定;面向?qū)ο蟪绦虻目刂屏鞒逃蛇\(yùn)行時(shí)各種事件的實(shí)際發(fā)生來(lái)觸發(fā),而不再由預(yù)定順序來(lái)決定,因此更符合實(shí)際需要。6.2類與對(duì)象6.2.1類的定義類可以通過class語(yǔ)句來(lái)定義,語(yǔ)法格式如下:class類名:類體定義一個(gè)類時(shí),以關(guān)鍵字class開始,后跟類名和冒號(hào)。類名遵循標(biāo)識(shí)符命名規(guī)則,其首字母通常采用大寫形式。類體用于定義類的所有細(xì)節(jié),向右縮進(jìn)對(duì)齊。在類體中定義類的所有變量成員和函數(shù)成員。變量成員即類的屬性,用于描述對(duì)象的狀態(tài)和特征;函數(shù)成員即類的方法,用于實(shí)現(xiàn)對(duì)象的行為和操作。通過定義類實(shí)現(xiàn)了數(shù)據(jù)和操作的封裝。類體中也可以只包含一個(gè)pass語(yǔ)句,此時(shí)將定義一個(gè)空類。訪問類的屬性類名.屬性名6.2.2創(chuàng)建對(duì)象創(chuàng)建類的實(shí)例對(duì)象:對(duì)象名=類名(參數(shù)列表)訪問對(duì)象的屬性:對(duì)象名.屬性名調(diào)用對(duì)象的方法:對(duì)象名.方法名(參數(shù))6.3成員屬性6.3.1類屬性類屬性按能否在類外部訪問可以分為公有屬性和私有屬性,它們都可以通過在類體中所有方法之外通過定義成員變量來(lái)創(chuàng)建,創(chuàng)建類之后也可以在類定義的外部通過類名和圓點(diǎn)運(yùn)算符來(lái)添加公有屬性。定義屬性時(shí),如果屬性名以雙下畫線“__”開頭,則該屬性就是私有屬性,否則就是公有屬性。在類體中所有方法之外,無(wú)論是公有屬性還是私有屬性都可以直接通過變量名來(lái)訪問,在類的成員方法內(nèi)部則要通過“類名.屬性名”形式來(lái)訪問。在類的外部,公有屬性仍然可以通過“類名.屬性名”形式來(lái)訪問,私有屬性則不能通過這種形式來(lái)訪問。如果試圖通過“類名.屬性名”形式來(lái)訪問私有屬性,則會(huì)拋出AttributeError錯(cuò)誤。6.3.2實(shí)例屬性實(shí)例屬性是某個(gè)類的實(shí)例對(duì)象所擁有的屬性,屬于該類的某個(gè)特定實(shí)例對(duì)象。實(shí)例屬性可以在類的內(nèi)部或類的外部通過賦值語(yǔ)句來(lái)創(chuàng)建。(1)在類的內(nèi)部,定義類的構(gòu)造方法__init__或其他實(shí)例方法時(shí),通過在賦值語(yǔ)句中使用self關(guān)鍵字、圓點(diǎn)運(yùn)算符和屬性名來(lái)創(chuàng)建實(shí)例屬性,語(yǔ)法格式如下:self.屬性名=值(2)在類的外部,創(chuàng)建類的實(shí)例后,可通過在賦值語(yǔ)句中使用實(shí)例對(duì)象名、圓點(diǎn)運(yùn)算符和屬性名來(lái)創(chuàng)建新的實(shí)例屬性,語(yǔ)法格式如下:對(duì)象名.屬性名=值6.3.3類屬性與實(shí)例屬性的比較類屬性與實(shí)例屬性的區(qū)別(1)所屬的對(duì)象不同(2)定義的方法不同(3)引用的方法不同類屬性與實(shí)例屬性的共同點(diǎn)和聯(lián)系(1)類對(duì)象和實(shí)例對(duì)象都是對(duì)象(2)類對(duì)象和實(shí)例對(duì)象包含的屬性及其取值都可以通過__dict__屬性來(lái)獲?。?)如果要讀取的某個(gè)實(shí)例屬性還不存在,但在類中定義了一個(gè)與其同名的類屬性,則Python就會(huì)以這個(gè)類屬性的值作為實(shí)例屬性的值,同時(shí)還會(huì)創(chuàng)建一個(gè)新的實(shí)例屬性6.4成員方法6.4.1內(nèi)置方法1.構(gòu)造方法構(gòu)造方法__init__(self,

...)是在創(chuàng)建新對(duì)象時(shí)自動(dòng)調(diào)用的,可以用來(lái)對(duì)類的實(shí)例對(duì)象進(jìn)行一些初始化操作,例如設(shè)置實(shí)例屬性等。如果在類中未定義構(gòu)造方法,則系統(tǒng)將執(zhí)行默認(rèn)的構(gòu)造方法。構(gòu)造方法支持重載,定義類時(shí)可以根據(jù)需要重新編寫構(gòu)造方法。2.析構(gòu)方法析構(gòu)方法__del__(self)在對(duì)象被刪除之前自動(dòng)調(diào)用,不需要在程序中顯式調(diào)用。當(dāng)程序運(yùn)行結(jié)束時(shí),在程序中創(chuàng)建的對(duì)象會(huì)被刪除,此時(shí)將自動(dòng)調(diào)用析構(gòu)方法;當(dāng)離開某個(gè)作用域(如函數(shù))時(shí),在該作用域中創(chuàng)建的對(duì)象會(huì)被刪除,此時(shí)析構(gòu)方法也會(huì)被調(diào)用一次,這樣可以用來(lái)釋放內(nèi)存空間。析構(gòu)方法支持重載,通常可以通過該方法執(zhí)行一些釋放資源的操作。6.4.2類方法類方法是類對(duì)象本身?yè)碛械某蓡T方法,通常可以用于對(duì)類屬性進(jìn)行修改。要將一個(gè)成員函數(shù)定義成類方法,必須將該函數(shù)作為裝飾器classmethod的目標(biāo)函數(shù),而且以類對(duì)象本身作為其第一個(gè)參數(shù),語(yǔ)法格式如下:@classmethoddef函數(shù)名(cls,…):函數(shù)體定義類方法之后,可以通過類對(duì)象或?qū)嵗龑?duì)象來(lái)訪問它,語(yǔ)法格式如下:類名.方法名([參數(shù)])對(duì)象名.方法名([參數(shù)])6.4.3實(shí)例方法類中的實(shí)例方法是類的實(shí)例對(duì)象所擁有的成員方法。定義實(shí)例方法時(shí),至少需要定義一個(gè)參數(shù),而且必須以類的實(shí)例對(duì)象作為第一個(gè)參數(shù),按照慣例第一個(gè)參數(shù)的名稱應(yīng)為self,但也可以使用其他名稱。定義實(shí)例方法的語(yǔ)法格式如下:def函數(shù)名(self,...):函數(shù)體定義實(shí)例方法后,只能通過對(duì)象名、圓點(diǎn)運(yùn)算符和方法名來(lái)調(diào)用它,而且不需要將對(duì)象實(shí)例作為參數(shù)傳入方法中,語(yǔ)法格式如下:對(duì)象名.方法名([參數(shù)])6.4.4靜態(tài)方法定義靜態(tài)方法,還必須將其作為修飾器staticmethod的目標(biāo)函數(shù),語(yǔ)法格式如下:@staticmethoddef函數(shù)名([參數(shù)列表])函數(shù)體當(dāng)定義一個(gè)類時(shí),可以在類的靜態(tài)方法中通過類名來(lái)訪問類屬性,但是不能在靜態(tài)方法中訪問實(shí)例屬性。在類的外部,可以通過類對(duì)象或?qū)嵗龑?duì)象來(lái)調(diào)用靜態(tài)方法,語(yǔ)法格式如下:類名.靜態(tài)方法名([參數(shù)])對(duì)象名.靜態(tài)方法名([參數(shù)])6.4.5私有方法在類中創(chuàng)建某種類型的私有方法的過程與創(chuàng)建相同類型的公有方法類似,當(dāng)定義實(shí)例方法時(shí)需要使用第一個(gè)形參來(lái)接受當(dāng)前實(shí)例對(duì)象;當(dāng)定義類方法時(shí)需要將成員函數(shù)作為裝飾器classmethod的目標(biāo)函數(shù),并且通過第一個(gè)形參來(lái)接受類對(duì)象本身;定義類靜態(tài)方法時(shí)需要將成員函數(shù)作為裝飾器staticmethod的目標(biāo)函數(shù),可以有形參也可以沒有形參。所不同的是,在定義私有方法時(shí),成員函數(shù)名必須以兩個(gè)下畫線“__”開頭。私有方法只能在類的內(nèi)部使用,其調(diào)用方法也公有方法類似,即私有實(shí)例方法通過當(dāng)前對(duì)象實(shí)例來(lái)調(diào)用,私有類方法和私有靜態(tài)方法則通過類對(duì)象來(lái)調(diào)用。不允許也不提倡在類的外部使用私有方法,如果一定要在類的外部調(diào)用私有方法,則需要使用一個(gè)新的方法名,該方法名以一個(gè)下畫線開頭,后跟類名和私有方法名。6.5類的繼承6.5.1單一繼承在Python語(yǔ)言中,可以在單個(gè)父類的基礎(chǔ)上來(lái)定義新的子類,這種繼承關(guān)系稱為單一繼承。單一繼承可以使用class語(yǔ)句來(lái)實(shí)現(xiàn),語(yǔ)法格式如下:class子類名(父類名):類體其中子類名表示要新建的子類;該子類要從中繼承的父類必須放在圓括號(hào)內(nèi)。如果子類名后面的圓括號(hào)中只有一個(gè)父類,則這種繼承關(guān)系稱為單一繼承?;诟割悇?chuàng)建新的子類之后,該子類將擁有父類中的所有公有屬性和所有成員方法,這些成員方法包括構(gòu)造方法、析構(gòu)方法、類方法、實(shí)例方法和靜態(tài)方法,除了繼承父類的所有公有成員外,還可以在子類中擴(kuò)展父類的功能,這可以通過兩種方式來(lái)實(shí)現(xiàn),一方面是在子類中增加新的成員屬性和成員方法,另一方面是對(duì)父類已有的成員方法進(jìn)行重定義,從而覆蓋父類的同名方法。6.5.2多重繼承

溫馨提示

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