




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
任務1認識類對象和實例對象01任務2認識屬性02任務3認識方法03282任務4認識繼承04任務5認識可迭代對象——迭代器和生成器05任務1
認識類對象和實例對象2831.?了解對象的定義。2.?了解面向?qū)ο蟮奶匦浴?.?了解類和實例的定義及使用。4.?能正確使用類對象和實例對象。任務目標284一、對象的定義所謂對象,從概念層面來看,是對某種事物的抽象表示(包含功能和屬性)。抽象可以分為兩個方面:數(shù)據(jù)抽象和過程抽象。數(shù)據(jù)抽象定義了對象的屬性,而過程抽象定義了對象的操作。相關知識285在面向?qū)ο蟮某绦蛟O計中,強調(diào)將數(shù)據(jù)(屬性)和操作(服務)融合成一個不可分割的單元,即對象。外部使用對象時,只需知道它的功能,而不必了解內(nèi)部的實現(xiàn)細節(jié)。在規(guī)范層面,對象是一系列可被其他對象使用的公共接口,實現(xiàn)了對象間的交互。從編程語言的角度,對象將數(shù)據(jù)和代碼(程序)封裝在一起,實現(xiàn)了信息的隱藏。通過類創(chuàng)建的實例被稱為對象。類和對象的關系類似汽車的設計圖紙與實際汽車的關系。設計圖紙(類)本身并不具備可用性,只有通過圖紙制造出來的汽車(對象)才能被使用。這種模型能夠幫助開發(fā)者更好地組織和管理代碼,實現(xiàn)代碼的重用和擴展。286二、面向?qū)ο蟮奶匦?.?封裝封裝是面向?qū)ο蟮闹饕匦?,是指把客觀事物抽象并封裝成對象,即將數(shù)據(jù)成員、屬性、方法和事件等集合在一個整體內(nèi)。通過訪問控制還可以隱藏內(nèi)部成員,但只允許可信的對象訪問或操作部分數(shù)據(jù)或方法。封裝保證了對象的獨立性,可以防止外部程序破壞對象的內(nèi)部數(shù)據(jù),同時便于對程序維護和修改。2872.?繼承繼承是面向?qū)ο蟮某绦蛟O計中代碼重用的主要方法。繼承允許使用現(xiàn)有類的功能,并在無須重新改寫原來類的情況下對這些功能進行擴展。繼承可以避免代碼復制和相關的代碼維護等問題。2883.?多態(tài)性派生類繼承了基類的所有非私有數(shù)據(jù)和行為,同時能夠定義自己的新數(shù)據(jù)和行為。因此,派生類擁有兩個有效的類型:自身的類型以及它所繼承的基類的類型。這種特性使得一個對象可以展現(xiàn)出多種不同類型的能力,這被稱為多態(tài)性。通過繼承,派生類能夠在已有基礎之上,擴展和定制基類,同時可以添加新的屬性和方法。多態(tài)性則使得可以在不同的上下文中使用相同的對象,從而實現(xiàn)更靈活和通用的代碼設計。多態(tài)性能夠在運行時自動地選擇適當?shù)姆椒ɑ蛐袨椋瑥亩岣叽a的可擴展性和可維護性。289三、類的定義類使用關鍵字class聲明。類的聲明格式如下。class類名:類體其中,類名為有效的標識符,通常由多個單詞組成,每個單詞的首字母大寫,其余字母小寫,這有助于提高代碼的可讀性和可維護性。類體是由縮進的一系列語句組成的塊。290在類體內(nèi)部定義的元素被視為類的成員。類的主要成員可以分為兩種類型:描述狀態(tài)的數(shù)據(jù)成員(也稱為屬性)和描述操作的函數(shù)成員(也稱為方法)。值得注意的是,Python中的class語句實際上是一個復合語句,它不僅定義了一個類,更是在Python解釋器執(zhí)行時創(chuàng)建了一個類對象。這個類對象可以看作一個模板,根據(jù)這個模板可以創(chuàng)建出許多實例,每個實例都具有類定義中所描述的屬性和方法。這種面向?qū)ο蟮乃枷霝榇a的設計和組織提供了更加靈活和可復用的方式。291四、實例的定義類是抽象的,如果要使用類定義的功能,就必須實例化類,即創(chuàng)建類的對象。在創(chuàng)建實例對象后,可以使用“.”運算符來調(diào)用其成員。注意:創(chuàng)建類的對象、創(chuàng)建類的實例、實例化類等說法是等價的,都是以類為模板生成了一個對象。實例對象的調(diào)用格式如下。anObject=類名(參數(shù)列表)anObject.對象函數(shù)或anObject.對象屬性292Python創(chuàng)建對象的方法無須使用關鍵字new,而是直接像調(diào)用函數(shù)一樣調(diào)用類對象并傳遞參數(shù),因此,類對象是可調(diào)用對象。在Python內(nèi)置函數(shù)中,bool、int、str、list、dict、set等均為可調(diào)用內(nèi)置類對象,在有的場合也稱之為函數(shù),如使用str函數(shù)把數(shù)值“123”轉換成字符串的形式“str(123)”。293五、類對象和實例對象的使用訪問類的成員(屬性和方法)主要有兩種方式:使用類對象和使用實例對象。1.?使用類對象訪問成員當使用類對象訪問成員時,可以直接通過類名訪問類的屬性和方法。這樣的訪問方式適用于類的靜態(tài)屬性和靜態(tài)方法,它們不依賴于實例對象的創(chuàng)建。這種方式更適合處理類級別的數(shù)據(jù)或方法。2942.?使用實例對象訪問成員當創(chuàng)建類的實例對象后,可以使用實例對象訪問實例屬性和實例方法。實例對象可以擁有自己的屬性值,同時可以訪問類的屬性和方法。這種方式更適合處理實例特定的數(shù)據(jù)和方法。295任務2
認識屬性2961.?熟悉實例屬性和類屬性的概念,并能正確區(qū)分。2.?了解私有屬性和公有屬性的區(qū)別。3.?了解@property修飾器的作用。4.?能正確使用類屬性和實例屬性。任務目標297在一個類中,數(shù)據(jù)成員是指在類定義內(nèi)部聲明的成員變量,也稱為域。這些成員變量用來存儲描述類特征的值,即屬性。屬性可以通過該類中定義的方法進行訪問,同時可以通過類對象或?qū)嵗龑ο筮M行訪問。屬性實際上就是在類中的變量,而在Python中,變量不需要預先聲明,可以直接使用。建議在類定義的開始位置初始化類對象的屬性,或者在類的構造函數(shù)(通常是__init__()方法)中初始化實例對象的屬性。這樣可以確保在使用類或?qū)嵗龝r,屬性已經(jīng)有了初始值,避免在使用過程中出現(xiàn)調(diào)用屬性值錯誤等問題。相關知識298299一、實例屬性通過“self.變量名”定義的屬性稱為實例屬性,也稱為實例變量。類的每個實例都包含了該類的實例變量的一個單獨副本,實例變量屬于特定的實例。實例變量在類的內(nèi)部通過self訪問,在類的外部通過對象實例訪問。實例屬性一般在__init__()方法中通過如下形式初始化。__init__()為類的初始化函數(shù),用于定義初始化程序或變量。self.實例變量名=初始值在其他實例函數(shù)中通過self訪問,具體如下。self.實例變量名=值
#寫入self.實例變量名
#讀取或者在創(chuàng)建實例后通過實例訪問,具體如下。obj1=類名()
#創(chuàng)建實例obj1.實例變量名=值
#寫入obj1.實例變量名
#讀取300301二、類屬性在Python中,開發(fā)者可以聲明屬于類對象本身的變量,即類屬性,也稱為類變量或靜態(tài)屬性。與實例屬性不同,類屬性屬于整個類,而不是特定實例的一部分,這意味著所有從該類創(chuàng)建的實例共享同一個屬性副本。無論創(chuàng)建了多少個實例,這種屬性的值對于該類的所有實例都是相同的。這種在類級別定義的屬性通常用于存儲與整個類相關的常量、配置信息或者共享數(shù)據(jù)。通過在類定義內(nèi)部直接聲明,可以在所有實例中方便地訪問和使用這些屬性,而不必為每個實例分別定義相同的值。這樣一來,類對象屬性提供了一種有效的方式來管理和維護類級別的數(shù)據(jù)。類屬性一般在類體中通過如下形式初始化。類變量名=初始值在其定義的方法中或外部代碼中通過類名訪問,具體如下。類名.類變量名=值
#寫入類名.類變量名
#讀取注意:類屬性如果通過“obj.屬性名”來訪問,則屬于該類的實例屬性。雖然類屬性可以使用實例來訪問,但容易造成困惑,所以建議用戶不要這樣使用,而是使用標準的訪問方式“類名.類變量名”。302303三、私有屬性和公有屬性Python類的成員沒有訪問控制限制,這與其他面向?qū)ο蟪绦蛟O計語言不同。Python通常約定以兩個下畫線開頭,但是不以兩個下畫線結束的屬性是私有的,其他為公有的。盡管Python并沒有嚴格的訪問控制機制,但是約定是很重要的,在編寫代碼時盡量遵循這些約定,以便提高代碼的可讀性和可維護性。注意:不能直接訪問私有屬性,但可以在方法中訪問。304四、@property修飾器面向?qū)ο缶幊痰姆庋b性原則強調(diào)不直接訪問類中的數(shù)據(jù)成員,在Python中可以通過定義私有屬性來實現(xiàn),并且可以編寫相應的用于訪問這些私有屬性的函數(shù),用@property修飾器修飾這些函數(shù)。這種方式允許程序?qū)⑦@些函數(shù)當作屬性來訪問,從而提供了更加友好和靈活的訪問方式。@property修飾器的默認行為是提供只讀屬性,這意味著開發(fā)者可以通過這些訪問器函數(shù)讀取屬性的值,但不能直接對屬性進行修改。如果有需要,還可以使用對應的getter、setter和deleter修飾器實現(xiàn)其他類型的訪問器函數(shù)。通過這些修飾器,可以更精細地控制屬性的讀取、修改和刪除操作,同時能在屬性被訪問或修改時執(zhí)行一些額外的操作,以實現(xiàn)更豐富的數(shù)據(jù)管理和封裝。305任務3
認識方法3061.?了解方法的概念。2.?熟悉常用的方法并能靈活運用。3.?了解方法的重載。4.?能正確定義和使用方法。任務目標307一、實例方法一般情況下,類方法的第一個參數(shù)一般為self,這種方法稱為實例方法。實例方法對類的某個給定的實例進行操作,可以通過self顯式地訪問該實例。實例方法的聲明格式如下。def方法名(self,[形參列表]):函數(shù)體相關知識308實例方法的調(diào)用格式如下。對象.方法名([實參列表])雖然類方法的第一個參數(shù)為self,但調(diào)用時用戶不需要也不能給該參數(shù)傳遞值。事實上,Python會自動把實例傳遞給該參數(shù)。注意:Python中的self等價于C++中的self指針和Java、C#中的this關鍵字。雖然沒有限制第一個參數(shù)名必須為self,但建議遵循慣例,這樣便于閱讀和理解,且集成開發(fā)環(huán)境也會提供相應的支持。309310二、靜態(tài)方法Python允許聲明與類的實例無關的方法,即靜態(tài)方法。靜態(tài)方法不對特定實例進行操作,在靜態(tài)方法中訪問實例會導致錯誤。靜態(tài)方法通過修飾器@staticmethod定義,其聲明格式如下。@staticmethoddef靜態(tài)方法名([形參列表]):函數(shù)體靜態(tài)方法一般通過類名訪問,也可以通過實例調(diào)用。其調(diào)用格式如下。類名.靜態(tài)方法名([實參列表])311三、類方法在Python中可以聲明屬于類本身的方法,即類方法。不同于普通的實例方法,類方法不會對特定的實例進行操作。在類方法中嘗試訪問對象實例會導致錯誤。為了定義類方法,需要使用修飾器@classmethod,并將第一個形參設置為類對象本身,通常命名為cls。類方法的聲明格式如下。@classmethoddef類方法名(cls,[形參列表]):函數(shù)體類方法一般通過類名訪問,也可以通過實例調(diào)用。312其調(diào)用格式如下。類名.類方法名([實參列表])注意:盡管類方法的第一個參數(shù)被命名為cls,但在調(diào)用時,用戶不需要也不能給該參數(shù)傳遞值。Python會自動將類傳遞給這個參數(shù)。類和實例不同。在Python中,類本身也被視為對象。當調(diào)用子類繼承自父類的類方法時,傳遞給cls的是子類對象,而不是父類對象。313四、__new__()方法和__init__()方法在Python的類體中,還可以定義一些特殊的方法,如__new__()方法和__init__()方法。__new__()方法是一個類方法,在創(chuàng)建對象時被調(diào)用,它返回當前對象的一個實例。通常情況下,不需要重載這個方法,因為Python會自動處理對象的創(chuàng)建過程。__init__()方法即構造函數(shù)(構造方法),用于在對象創(chuàng)建完成后進行初始化工作。該方法在對象被創(chuàng)建后立即調(diào)用,它負責初始化當前對象的實例屬性等。該方法沒有返回值。314五、__del__()方法__del__()方法即析構函數(shù)(析構方法),用于實現(xiàn)銷毀類的實例所需的操作,如釋放對象占用的非托管資源(如打開的文件、網(wǎng)絡連接等)。默認情況下,當對象不再被使用時運行__del__()方法。由于Python解釋器實現(xiàn)自動垃圾回收,所以無法明確這個方法究竟在什么時候運行。通過del語句可以強制銷毀一個實例,從而保證調(diào)用實例的__del__()方法。315六、私有方法和公有方法與私有屬性類似,Python約定以兩個下畫線開頭,但不以兩個下畫線結束的方法是私有的,其他為公有的。以雙下畫線開始和結束的方法是Python專有的方法。注意:不能直接訪問私有方法,但可以在其他方法中訪問。316七、方法的重載在許多程序設計語言中方法可以重載,即可以定義多個重名的方法,只要保證方法簽名是唯一的即可。方法簽名包括3個部分,即方法名、參數(shù)數(shù)量和參數(shù)類型。Python本身是動態(tài)語言,方法的參數(shù)沒有聲明類型(在調(diào)用傳值時確定參數(shù)的類型),參數(shù)的數(shù)量由可選參數(shù)和可變參數(shù)控制,故Python對象方法不需要重載,定義一個方法即可實現(xiàn)多種調(diào)用,從而實現(xiàn)相當于其他程序設計語言的重載功能。注意:在Python類體中定義多個重名的方法雖然不會報錯,但只有最后一個方法有效,因此建議不要定義重名的方法。任務4
認識繼承3171.?了解派生類的使用方法。2.?了解查看繼承層次關系的方法。3.?了解類成員的繼承和重寫。4.?能正確使用繼承。任務目標318一、派生類Python支持多重繼承,即一個派生類可以繼承多個基類。派生類的聲明格式如下。class派生類名(基類1,[基類2,…]):類體其中,派生類名后為所有基類的名稱元組。如果在類定義中沒有指定基類,則默認其基類為object。object是所有對象的根基類,定義了公用方法的默認實現(xiàn),如__new__()方法。相關知識319320二、查看繼承的層次關系多個類的繼承可以形成層次關系,通過類的方法mro()或類的屬性__mro__可以輸出其繼承的層次關系。三、類成員的繼承和重寫通過繼承,派生類繼承基類中除構造方法之外的所有成員。如果在派生類中重新定義從基類繼承的方法,則在派生類中定義的方法將覆蓋從基類中繼承的方法。任務5
認識可迭代對象——迭代器和生成器3211.?了解可迭代對象的定義。2.?了解迭代器的作用。3.?熟悉生成器函數(shù)并能正確使用。任務目標322可循環(huán)迭代的對象稱為可迭代對象,迭代器和生成器函數(shù)是可迭代對象,Python提供了定義迭代器和生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印刷合金企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 吸引膠管解繩機企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 同步勁量頻閃燈企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- 電磁式直流電動機企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 視頻設備修理服務企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 不銹鋼企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 節(jié)能型化工專用爐企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- 2025年寄生蟲病防治獸藥合作協(xié)議書
- 2025年拉擠樹脂合作協(xié)議書
- 2025-2030中國網(wǎng)絡運營行業(yè)發(fā)展分析及發(fā)展趨勢預測報告
- 人工智能發(fā)展史課件
- 醫(yī)院定量檢驗性能驗證實驗方案設計
- 《組織行為學》題庫(含答案)
- 重醫(yī)大小兒外科學教案11先天性腸閉鎖、腸狹窄及腸旋轉不良
- 體育心理學(第三版)課件第八章運動技能的學習
- JT∕T 1431.3-2022 公路機電設施用電設備能效等級及評定方法 第3部分:公路隧道照明系統(tǒng)
- 行政事業(yè)單位公務卡使用管理辦法模板
- DB22∕T 2797.1-2017 玄武巖纖維復合筋及玄武巖纖維混凝土設計與施工規(guī)范 第1部分:玄武巖纖維復合筋
- 資產(chǎn)評估案例分析-——以貴州茅臺酒股份有限公司為例
- 五年級奧數(shù)教程
- 針刺傷的預防及處理(課堂PPT)
評論
0/150
提交評論