




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第七章面向?qū)ο缶幊?49250第一節(jié)面向?qū)ο蠡A(chǔ)第二節(jié)類的定義與使用第三節(jié)數(shù)據(jù)成員與方法成員第四節(jié)類的繼承第五節(jié)類的封裝和多態(tài)面向?qū)ο蠡A(chǔ)第一節(jié)2511.?了解面向?qū)ο蟮暮x。2.?了解面向?qū)ο蟮幕咎卣鳌?.?了解面向?qū)ο蟮某S眯g(shù)語。252一、面向?qū)ο蟮暮x面向?qū)ο缶幊淌且环N通過對(duì)象,把現(xiàn)實(shí)世界映射到計(jì)算機(jī)模型的編程方法。把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作方法封裝在一起,作為一個(gè)相互依存的整體——對(duì)象。這里把現(xiàn)實(shí)世界的任何事物都當(dāng)作一個(gè)相對(duì)獨(dú)立的對(duì)象來看待;也可以是抽象的事件。253二、面對(duì)對(duì)象的基本特征1.?封裝封裝是面向?qū)ο缶幊痰暮诵乃枷耄瑢?duì)象的屬性和行為封裝起來就是類。采用封裝的優(yōu)點(diǎn)是保證了類內(nèi)部數(shù)據(jù)結(jié)構(gòu)的完整性,使用類時(shí)不能直接訪問該類中的數(shù)據(jù),避免了外部對(duì)內(nèi)部數(shù)據(jù)的影響,提高了程序的可維護(hù)性。面向?qū)ο蟪绦蛟O(shè)計(jì)采用封裝具有以下兩方面含義。(1)將有關(guān)的數(shù)據(jù)和操作代碼封裝在一個(gè)類中,各個(gè)類之間相對(duì)獨(dú)立,互不干擾。(2)將類中的某些數(shù)據(jù)和操作代碼對(duì)外隱蔽,即隱蔽內(nèi)部細(xì)節(jié),只留下少量接口,以便與外部聯(lián)系,接收外部的消息。2542.?繼承繼承主要利用了特定對(duì)象之間的共有屬性。如果類之間具有繼承關(guān)系,則它們具有以下特性。(1)類之間具有共享特性。(2)類之間具有差別或新增部分。(3)類之間具有層次結(jié)構(gòu)。繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語言不同于其他語言的最重要的特點(diǎn),是其他語言所沒有的。繼承性可以避免公用代碼的重復(fù)開發(fā),避免代碼和數(shù)據(jù)冗余,而且能通過增強(qiáng)一致性來減少模塊間的接口和界面。2553.?多態(tài)多態(tài)是指同一個(gè)行為可以有不同的表現(xiàn)形式。多態(tài)的意義在于同一操作作用于不同的對(duì)象時(shí),可以有不同的解釋,從而產(chǎn)生不同的執(zhí)行結(jié)果,即“以父類的身份出現(xiàn),以自己的方式工作”。256三、面向?qū)ο蟮某S眯g(shù)語1.?類類(class)是用來描述具有相同的屬性(數(shù)據(jù))和行為(方法)的對(duì)象集合。它定義了該集合中所有對(duì)象共有的數(shù)據(jù)和方法,對(duì)象是類的實(shí)例。2572.?對(duì)象對(duì)象是通過類定義的數(shù)據(jù)結(jié)構(gòu)進(jìn)行實(shí)例化后的變量。對(duì)象包括數(shù)據(jù)成員(類變量和實(shí)例變量)和方法。Python和其他編程語言相比,在盡可能不增加新的語法和語義的情況下加入了類機(jī)制。面向?qū)ο缶幊痰奶攸c(diǎn)如下。(1)完全采用面向?qū)ο蟮乃枷耄且环N高級(jí)動(dòng)態(tài)編程語言。(2)支持封裝、繼承、多態(tài)、重載和重寫。(3)一切內(nèi)容都為對(duì)象,如字符串、列表、元組、數(shù)值等。(4)創(chuàng)建類時(shí),屬性用變量表示,行為用方法表示。2583.?實(shí)例化實(shí)例化就是創(chuàng)建一個(gè)類的實(shí)例,即類的具體對(duì)象。4.?類變量類變量在整個(gè)實(shí)例化的對(duì)象中是公用的。類變量定義在類中且在方法體之外。5.?實(shí)例變量實(shí)例變量是定義在方法中的變量,只作用于當(dāng)前實(shí)例中。2596.?數(shù)據(jù)成員類變量或?qū)嵗兞坑糜谔幚眍惣捌鋵?shí)例對(duì)象的相關(guān)數(shù)據(jù)就是數(shù)據(jù)成員。7.?方法類中定義的函數(shù)常稱為方法。方法是類中一種特殊的函數(shù)。8.?方法重寫如果從父類繼承的方法不能滿足子類的要求,可以對(duì)其進(jìn)行改寫,這個(gè)過程稱為方法覆蓋,也稱為方法重寫。260類的定義與使用第二節(jié)2611.?了解類的含義。2.?掌握類的定義方法。3.?掌握類實(shí)例化的方法。262一、類的定義Python中使用關(guān)鍵字class來定義類。格式:class類名:數(shù)據(jù)成員名=值
def方法名():方法體263說明:1.類名遵循標(biāo)識(shí)符命名規(guī)則,通常情況下建議類名首字母大寫,有多個(gè)單詞時(shí)遵循“駝峰原則”。2.類的成員包括數(shù)據(jù)成員和方法成員。數(shù)據(jù)成員的定義通過直接給數(shù)據(jù)成員賦值的方式進(jìn)行,方法成員的定義與函數(shù)的定義方式相同。264二、類的實(shí)例化類的實(shí)例化即由類創(chuàng)建對(duì)象。當(dāng)類定義完成后,并不會(huì)真正創(chuàng)建一個(gè)實(shí)例。格式:對(duì)象名=類名([參數(shù)1,參數(shù)2,…])功能:將類實(shí)例化為對(duì)象。說明:參數(shù)是可選項(xiàng),根據(jù)類的構(gòu)造方法選擇是否需要參數(shù)。通過“對(duì)象名.數(shù)據(jù)成員”或“對(duì)象名.方法成員()”的方式來訪問對(duì)象的數(shù)據(jù)成員或方法成員。265
數(shù)據(jù)成員與方法成員第三節(jié)2661.?了解數(shù)據(jù)成員的類別。2.?了解方法成員的類別。3.?能區(qū)分類成員和實(shí)例成員。267一、數(shù)據(jù)成員1.?數(shù)據(jù)成員的類別Python中類的數(shù)據(jù)成員包括類成員(類屬性)和實(shí)例成員(實(shí)例屬性)。類成員是在類中所有方法之外定義的數(shù)據(jù)成員;實(shí)例成員一般是在構(gòu)造方法__init__()中定義的,定義和使用時(shí)必須以self作為前綴。與構(gòu)造方法相對(duì)應(yīng)的方法稱為析構(gòu)方法__del__(),是將產(chǎn)生的對(duì)象清除后由系統(tǒng)自動(dòng)調(diào)用,一般用來釋放對(duì)象所占用的資源。如果沒有明確定義析構(gòu)方法,系統(tǒng)會(huì)提供一個(gè)默認(rèn)的析構(gòu)方法進(jìn)行必要的清理工作。2682.?數(shù)據(jù)成員的區(qū)別在主程序(或類的外部)中,實(shí)例成員屬于實(shí)例(即對(duì)象),只能通過對(duì)象名訪問;而類成員屬于類,既可以通過類名訪問,也可以通過對(duì)象名訪問。3.?類成員的增加與其他面向?qū)ο缶幊痰恼Z言不同,在Python中,允許動(dòng)態(tài)地為類和對(duì)象增加成員,這是Python動(dòng)態(tài)類型特點(diǎn)的重要體現(xiàn)。4.?屬性值的修改如果修改類成員的值,應(yīng)通過類修改,而不能通過對(duì)象修改。269二、方法成員1.?實(shí)例方法實(shí)例方法是每個(gè)對(duì)象所有的、各自獨(dú)立的方法。如果類中定義的方法沒有特殊聲明,都是實(shí)例方法。類的所有方法都應(yīng)至少有一個(gè)名為self的參數(shù),并且必須是方法的第一個(gè)參數(shù)。參數(shù)self代表將來要?jiǎng)?chuàng)建的對(duì)象本身,在外部通過“對(duì)象名.方法名()”調(diào)用實(shí)例方法時(shí)并不需要傳遞這個(gè)參數(shù);如果在外部通過“類名.方法名()”調(diào)用實(shí)例方法,則需要顯式地為參數(shù)self傳值。在類的實(shí)例方法中訪問實(shí)例成員時(shí),需以“self.實(shí)例成員”形式訪問,訪問類成員時(shí)需以“類名.類成員”形式訪問。2702.?類方法類方法是屬于類的方法,不屬于任何實(shí)例對(duì)象。類方法主要模擬__init__構(gòu)造方法在定義類的時(shí)候使用類的屬性或者給類的屬性賦值。類方法以cls作為第一個(gè)參數(shù)表示該類自身,使用方法與self類似。在類中定義類方法時(shí)用@classmethod修飾。2713.?靜態(tài)方法與類方法相似,靜態(tài)方法不屬于任何實(shí)例對(duì)象,它只屬于類。靜態(tài)方法主要存放邏輯性的代碼,是一個(gè)相對(duì)獨(dú)立、單純的方法。在類中定義靜態(tài)方法時(shí)用@staticmethod修飾。靜態(tài)方法可以沒有任何參數(shù)。同樣,靜態(tài)方法既可以通過“類名.方法名()”形式訪問,也可以通過“對(duì)象名.方法名()”形式訪問,與類方法相同,靜態(tài)方法中也只能訪問類成員,而不能訪問實(shí)例成員。272三、訪問權(quán)限1.?公有的公有的類成員可以在任何地方被訪問,其成員兩側(cè)不帶下畫線,形如
×××。2.?受保護(hù)的受保護(hù)的類成員可以被其自身及其子類訪問,其成員以單下畫線開頭,形如_×××。2733.?私有的私有的類成員只能被其定義所在的類訪問,其成員以雙下畫線開頭,形如__×××。4.?特殊成員特殊成員的兩側(cè)各有雙下畫線,形如__×××__,為系統(tǒng)定義的特殊成員,如構(gòu)造方法__init__等。274類的繼承第四節(jié)2751.?了解繼承的含義。2.?掌握繼承的定義格式。3.?能調(diào)用父類方法。276一、繼承關(guān)系在程序中,繼承描述的是事物之間的所屬關(guān)系,一般來說,子類是基類的特殊化。如圖所示,父類為學(xué)生,小學(xué)生、初中生、高中生和大學(xué)生都是父類派生而來的子類。277繼承關(guān)系二、繼承的定義格式繼承的語法格式:class子類名(父類名1[,父類名2…]):
子類成員定義父類寫在括號(hào)內(nèi),如果子類有多個(gè)父類,則需要全部寫在括號(hào)內(nèi)并用逗號(hào)“,”分隔,括號(hào)后緊跟冒號(hào)。278三、父類方法的調(diào)用子類除了可以繼承父類成員外,還可以添加自己的一些成員。如果需要在子類中調(diào)用父類的方法,可以使用內(nèi)置方法“super().方法名”或通過“父類名.方法名()”方式來實(shí)現(xiàn)。四、多繼承在Python中支持多繼承,如果父類中有相同的方法名,而在子類中使用時(shí)沒有指定父類名,則Python解釋器將按順序從左向右進(jìn)行搜索。279類的封裝和多態(tài)第五節(jié)2801.?了解類的封裝的含義。2.?了解類的多態(tài)的含義。281一、類的封裝在Python中,類的封裝是指將類的某些部分(屬性、方法)隱藏起來,稱為私有屬性或方法。實(shí)例化的對(duì)象不能直接使用被封裝的方法和屬性。封裝具有一定的保護(hù)作用,可以隱藏對(duì)象的屬性和方法。在Python中,封裝的格式在本章的第三節(jié)訪問權(quán)限中已提及,即私有的方法或?qū)傩裕趯傩院头椒Q上加雙下畫線“__”前綴,完成封裝。282二、類的多態(tài)多態(tài)是面向?qū)ο缶幊痰挠忠惶匦浴K^多態(tài),是指不同的類中使用相同的方法名實(shí)現(xiàn)不同的功能。子類繼承父類的成員,可以重寫父類的成員方法,使其滿足自己的需求,這就是多態(tài)的表現(xiàn)形式。在Python中,主要通過重寫父類方法來實(shí)現(xiàn)多態(tài)。283第八章文件與異常284285第一節(jié)文件的基本操作第二節(jié)文件與目錄操作第三節(jié)異常處理文件的基本操作第一節(jié)2861.?了解文件操作的類型。2.?能打開與關(guān)閉文件。3.?能讀寫文本文件。287一、文件的打開與關(guān)閉1.?文件的打開——open?(?)?函數(shù)格式:open?(file,?mode="r",buffering=-1,?encoding=None,?errors=None,?newline=None,?closefd=True,?opener=None)?功能:以指定的模式打開指定文件。說明:(1)file:文件路徑及文件名,可使用相對(duì)路徑或絕對(duì)路徑。(2)mode:文件的打開模式,默認(rèn)值為“r”,即只讀模式。文件打開模式見下表。以不同模式打開文件時(shí),文件指針的初始位置有所不同。以“只讀”和“只寫”模式打開時(shí),文件指針的初始位置是文件頭;以“追加”模式打開文件時(shí),文件指針的初始位置是文件尾。288289文件打開模式(3)buffering:指定讀寫文件的緩存模式。0表示不緩沖,1表示行緩沖,如大于1則表示緩沖區(qū)的大小。默認(rèn)值為
-1,表示使用系統(tǒng)默認(rèn)的緩沖區(qū)大小。(4)encoding:指定文件的編碼方式,只適用于文本模式,可以使用Python支持的任何格式。(5)errors:指定如何處理編碼和解碼錯(cuò)誤。(6)newline:區(qū)分換行符,只適用于文本模式,取值可以是None、""、\n、\r、\r\n。(7)closefd:根據(jù)傳入的file參數(shù)類型,設(shè)置文件是否在文件對(duì)象的close?(?)?方法中被關(guān)閉。(8)opener:自定義打開文件方式。2902.?文件的關(guān)閉——close?(?)?函數(shù)在絕大多數(shù)情況下,打開文件和關(guān)閉文件是一對(duì)標(biāo)配操作。如果不關(guān)閉打開的文件,則打開的文件對(duì)象會(huì)一直留存在內(nèi)存中,若打開的文件多了,容易出現(xiàn)內(nèi)存溢出等錯(cuò)誤。格式:文件對(duì)象.close?(?)?功能:將緩沖區(qū)的內(nèi)容寫入文件,同時(shí)關(guān)閉文件,并釋放文件對(duì)象。說明:文件對(duì)象是指用open?(?)?函數(shù)打開后返回的對(duì)象。291二、文本文件的讀寫操作1.?寫操作Python中提供了多種方法進(jìn)行文本文件的寫操作。(1)write?(?)?方法格式:文件對(duì)象.write?(s)功能:將字符串s寫入文件中。說明:write?(?)?方法的返回值為寫入的字符數(shù);在寫模式下打開一個(gè)已經(jīng)存在的文件時(shí),將清除原文件的內(nèi)容,若要保留原文件的內(nèi)容,可以采用追加模式;寫入內(nèi)容時(shí),系統(tǒng)不會(huì)添加換行符,如需換行,可在字符串s中加入相應(yīng)的換行符。292(2)writeline?(?)?方法格式:文件對(duì)象.writeline?(slist)功能:將字符串列表slist寫入文本文件中。說明:如果需要一次寫入多個(gè)字符串,可將所有字符串放入一個(gè)列表中。該方法不會(huì)自動(dòng)添加換行符,也沒有返回值。2932.?讀操作Python中提供了多種方式來讀取文本文件中的內(nèi)容。(1)read?(?)?方法格式:文件對(duì)象.read?([size])功能:從文本文件中讀取內(nèi)容。說明:從文件對(duì)象中讀取size個(gè)字符的內(nèi)容,若省略size,則表示讀取所有內(nèi)容,返回值為字符串。294(2)readline?(?)?方法格式:文件對(duì)象.readline?(?)?功能:從文本文件中讀取一行內(nèi)容,返回值為字符串。(3)readlines?(?)?方法格式:文件對(duì)象.readlines?(?)?功能:從文本文件中讀取全部內(nèi)容,返回值為字符串列表。295三、文件的常用屬性和方法1.?常用屬性文件的常用屬性見下表。296文件的常用屬性2.?方法除了打開、關(guān)閉和讀寫操作外,文件還有一些其他常用的內(nèi)置方法,見下表。297文件常用的內(nèi)置方法四、上下文管理語句with在程序中即使編寫了關(guān)閉文件的代碼,也無法保證文件一定能正常關(guān)閉。若在文件打開之后、關(guān)閉之前出現(xiàn)錯(cuò)誤,將無法正常關(guān)閉文件。因此,在管理文件對(duì)象時(shí)推薦使用上下文管理語句with,可以有效地避免文件非正常關(guān)閉的問題。上下文管理語句with可自動(dòng)管理資源,能保證文件被正確關(guān)閉,可以在代碼塊執(zhí)行完畢自動(dòng)還原進(jìn)入該代碼塊的上下文,常用于文件操作、數(shù)據(jù)庫連接、網(wǎng)絡(luò)通信連接等場合。298
文件與目錄操作第二節(jié)2991.?了解os、os.path模塊的常用文件和目錄操作方法。2.?能獲取文件的各種屬性,完成路徑的常見操作。300一、os模塊為方便文件與目錄操作,Python中的os模塊提供了一些常用方法,見下表。301os模塊的常用方法二、os.path模塊os.path模塊主要用于獲取文件的屬性以及進(jìn)行路徑操作,常用方法見下表。302os.path模塊常用方法303os.path模塊常用方法異常處理第三節(jié)3041.?了解程序錯(cuò)誤的類型。2.?了解程序異常的類型。3.?能用try…except…結(jié)構(gòu)、try…except…else結(jié)構(gòu)和try…except…else…finally結(jié)構(gòu)捕獲并處理異常。305一、程序錯(cuò)誤的類型1.?語法錯(cuò)誤語法錯(cuò)誤是指因不符合語法規(guī)則而產(chǎn)生的錯(cuò)誤,如標(biāo)識(shí)符命名錯(cuò)誤、不正確的縮進(jìn)等,這類錯(cuò)誤在編輯或解釋時(shí)就會(huì)被檢測出來,一旦產(chǎn)生這種錯(cuò)誤,程序?qū)o法運(yùn)行。2.?運(yùn)行時(shí)錯(cuò)誤在程序運(yùn)行過程中產(chǎn)生錯(cuò)誤而導(dǎo)致程序異常中斷,這類錯(cuò)誤為運(yùn)行時(shí)錯(cuò)誤。出現(xiàn)這類錯(cuò)誤時(shí),系統(tǒng)會(huì)終止程序運(yùn)行,然后報(bào)錯(cuò)。3063.?邏輯錯(cuò)誤邏輯錯(cuò)誤又稱語義錯(cuò)誤,雖然程序并不提示任何語法錯(cuò)誤,也沒有異常,但最終程序運(yùn)行結(jié)果與預(yù)期結(jié)果不一致。異常處理主要針對(duì)運(yùn)行時(shí)錯(cuò)誤進(jìn)行處理,語法錯(cuò)誤和邏輯錯(cuò)誤可以通過程序員在設(shè)計(jì)及編寫程序時(shí)進(jìn)行合理設(shè)計(jì)并規(guī)避。307二、程序異常的類型程序運(yùn)行時(shí)發(fā)生的每個(gè)異常都對(duì)應(yīng)著一個(gè)異常類,Python中的異常類有很多,常見的異常類見下表。308Python中常見的異常類309Python中常見的異常類二、程序異常的類型1.?try…except…結(jié)構(gòu)語法格式:try:
try代碼塊except?[異常?as?ex]:
except代碼塊功能:異常處理。310說明:try子句中的代碼塊包含可能會(huì)引發(fā)異常的語句,而except子句則用來捕捉相應(yīng)的異常。如果try子句中的代碼引發(fā)異常并被except子句捕捉,則執(zhí)行except子句代碼塊;如果try子句中的代碼沒有出現(xiàn)異常,則執(zhí)行異常處理結(jié)構(gòu)之后的代碼。ex表示捕捉到的錯(cuò)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合川區(qū)初中“七校聯(lián)盟”2025年春期半期質(zhì)量檢測七年級(jí) 英語試題
- 投資基金合同履約金的管理
- 《Python程序設(shè)計(jì)基礎(chǔ)》課件 第5-8章 函數(shù)與模塊-文件與異常
- 鐵路工程安全技術(shù)石家莊鐵路35課件
- 《GB 18399-2001棉花加工機(jī)械安全要求》(2025版)深度解析
- ARM Cortex-M3嵌入式開發(fā)及應(yīng)用教與學(xué) 課件 第12、13章 信號(hào)量與互斥信號(hào)量;消息郵箱與消息隊(duì)列
- 大學(xué)生職業(yè)規(guī)劃大賽《英語專業(yè)》生涯發(fā)展展示
- 簡單版度個(gè)人耕地承包協(xié)議
- 農(nóng)產(chǎn)品購銷合作協(xié)議
- 酒店裝修合同范本
- 《有機(jī)光電材料》課件
- 社區(qū)人民調(diào)解工作培訓(xùn)課件
- 滬科版初中數(shù)學(xué)目錄
- JCT862-2008 粉煤灰混凝土小型空心砌塊
- 你也走了很遠(yuǎn)的路吧
- 全國水利ABC證單選題七
- Unit 3 What would you like單元作業(yè)設(shè)計(jì)
- 竣工結(jié)算審計(jì)服務(wù)投標(biāo)方案
- 人機(jī)工程培訓(xùn)(推行團(tuán)隊(duì)版)-課件
- GB 150-1998鋼制壓力容器
- 工程聯(lián)系單(模板)
評(píng)論
0/150
提交評(píng)論