




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目要求理解面向?qū)ο蟮母拍詈途幊趟枷?,類和對象定義以及它們的關(guān)系掌握創(chuàng)建類和對象的方法理解面向?qū)ο蟮娜筇匦裕⒄莆绽^承的使用掌握類屬性和實例屬性掌握構(gòu)造方法和析構(gòu)方法的使用方法了解類方法和靜態(tài)方法的使用面向?qū)ο箢惡蛯ο竺嫦驅(qū)ο笕筇匦灶悓傩院皖惙椒ㄓ螒蚰K——pygame
面向?qū)ο螅∣bjectOriented)是一種軟件開發(fā)方法。面向?qū)ο笫且环N對現(xiàn)實世界理解和抽象的方法,是計算機(jī)編程技術(shù)發(fā)展到一定階段后的產(chǎn)物,它的提出是相對于面向過程來講的。
面向?qū)ο蟪绦蛟O(shè)計(ObjectOrientedProgramming)方法是盡可能模擬人類的思維方式,使得軟件的開發(fā)方法與過程盡可能接近人類認(rèn)識世界、解決現(xiàn)實問題的方法和過程,也即使得描述問題的問題空間與問題的解決方案空間在結(jié)構(gòu)上盡可能一致,把客觀世界中的實體抽象為問題域中的對象。面向?qū)ο竺嫦驅(qū)ο竺嫦驅(qū)ο蠛兔嫦蜻^程的區(qū)別是:面向過程是一種以過程為中心的編程思想;面向?qū)ο笫且环N以對象為核心的編程思想。面向過程是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn);面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,然后對每一個對象進(jìn)行操作來實現(xiàn)。面向過程的核心是函數(shù);面向過程的核心是類和對象。面向?qū)ο竺嫦驅(qū)ο蟮闹饕拍顚ο箢悢?shù)據(jù)抽象繼承動態(tài)綁定數(shù)據(jù)封裝消息傳遞多態(tài)性類和對象
面向?qū)ο蟪绦蛟O(shè)計以對象為核心,該方法認(rèn)為程序由一系列對象組成。類是對現(xiàn)實世界的抽象,包括表示靜態(tài)屬性的數(shù)據(jù)和對數(shù)據(jù)的操作,對象是類的實例化。對象間通過消息傳遞相互通信,來模擬現(xiàn)實世界中不同實體間的聯(lián)系。在面向?qū)ο蟮某绦蛟O(shè)計中,對象是組成程序的基本模塊。
Python語言從設(shè)計之初就已經(jīng)是一門面向?qū)ο蟮恼Z言,因此Python中創(chuàng)建類和對象是很容易的。類和對象1.類的定義
類(Class)是面向?qū)ο蟪绦蛟O(shè)計(OOP,Object-OrientedProgramming)中的概念,是面向?qū)ο缶幊痰幕A(chǔ)。類是一群物種的整體名稱,例如人類、動物類、植物類等等,在編程語言中類是一種用戶定義的引用數(shù)據(jù)類型,也稱類類型,類似于byte、short、int(char)、long、float、double等基本數(shù)據(jù)類型,不同的是它是一種復(fù)雜的數(shù)據(jù)類型。它是具有相同或相似性質(zhì)的對象的抽象,本質(zhì)是數(shù)據(jù)類型,而不是數(shù)據(jù),所以不存在于內(nèi)存中,不能被直接操作,只有被實例化為對象時,才會變得可操作。類和對象類的定義包括類的名稱,通常情況下首字母使用大寫字母,以區(qū)分類名與其他變量名類名用于描述事物的特征,例如狗的種類、顏色等特征屬性用于描述事物的行為,例如狗的叫聲、奔跑等行為方法類和對象
在Python中,使用class關(guān)鍵字定義一個類,其基本語法格式如下:
class類名:
類的屬性
類的方法如:定義一個狗類,代碼為:
classDog
#屬性
#方法
defeat(self):
print(‘狗喜歡吃肉!’)類和對象2.對象的創(chuàng)建
類是一群具有相同特征的事物,是不能具體指向某個東西的,而對象就是類的具體化,是類中具體的某個實物,所以說類是對象的抽象,對象是類的具體。類的屬性和方法是不能實現(xiàn)的,只有具體到對象才能實現(xiàn)。Python語言中,創(chuàng)建對象的基本語法格式是:
對象名=類名()類和對象3.構(gòu)造方法和析構(gòu)方法
在Python程序中,有兩個特殊的方法,分別是構(gòu)造方法_init_()和析構(gòu)方法_del_()。構(gòu)造方法用于初始化對象的屬性,析構(gòu)方法用于釋放類和對象所占用的空間。構(gòu)造方法和析構(gòu)方法都是由編譯器隱式調(diào)用的。這些方法的調(diào)用順序取決于程序的執(zhí)行進(jìn)入和離開實例化對象時所在的那個作用域的順序。一般而言,析構(gòu)方法的調(diào)用順序和構(gòu)造方法的調(diào)用順序相反,但是,對象的存儲類可以改變析構(gòu)函數(shù)的調(diào)用順序。
類和對象3.1構(gòu)造方法
構(gòu)造方法具有初始化的作用,也就是當(dāng)該類被實例化的時候就會執(zhí)行該方法,也就是當(dāng)一個對象被創(chuàng)建后,會立即調(diào)用構(gòu)造方法。
Python類中,手動添加構(gòu)造方法的語法格式如下:def__init__(self,...):
代碼塊類和對象3.2析構(gòu)方法
當(dāng)對象使用完以后需要刪除的時候,Python語言就會釋放類所占用的資源,此時Python解釋器會默認(rèn)調(diào)用一個析構(gòu)方法。析構(gòu)方法是當(dāng)對象在內(nèi)存中被釋放時,自動觸發(fā)執(zhí)行。此方法一般無需定義,因為python是一門高級語言,程序員在使用時無需關(guān)心內(nèi)存的分配和釋放,析構(gòu)方法的調(diào)用是由解釋器在進(jìn)行垃圾回收時是自動觸發(fā)執(zhí)行的。Python
類中,手動添加析構(gòu)方法的語法格式如下:def__del__(self):
代碼塊類和對象3.3構(gòu)造方法和析構(gòu)方法的注意問題:構(gòu)造方法和析構(gòu)方法的方法名中,開頭和結(jié)尾各有一個下劃線,且中間不能有空格。在Python語言中,如果不手動創(chuàng)建一個構(gòu)造方法,系統(tǒng)會自動為類添加一個僅包含self參數(shù)的構(gòu)造方法。在Python語言中,析構(gòu)方法也是可以省略的,因為Python有一個垃圾收集器,可以自動處理內(nèi)存管理。類和對象4.self的使用
在Python類中規(guī)定,函數(shù)的第一個參數(shù)是實例對象本身,并且約定俗成,把其名字寫為self。其作用相當(dāng)于java中的this,表示當(dāng)前類的對象,可以調(diào)用當(dāng)前類中的屬性和方法。面向?qū)ο蟮娜筇匦苑庋b繼承多態(tài)封裝
封裝,顧名思義就是將某些不想讓別人隨便修改的東西包裝起來,別人只能看到包裝的外表并且只能通過外表提供的接口進(jìn)行操作,而不需要知道內(nèi)部的原理并且不能直接修改內(nèi)部的東西。
在面向?qū)ο蟮木幊陶Z言中,封裝就是將不想讓外部隨意修改的屬性進(jìn)行隱藏,僅對外公開接口,這樣在使用此類時,將無法直接以“類對象.屬性名”的形式調(diào)用這些屬性,而只能用未隱藏的類方法間接操作這些隱藏的屬性,以達(dá)到控制在程序中屬性的讀和修改的訪問級別的目的。面向?qū)ο蟮娜筇匦悦嫦驅(qū)ο蟮娜筇匦訮ython類中的變量和方法,不是公有的(類似public屬性),就是私有的(類似private),這兩種屬性的區(qū)別如下:public:公有屬性的類變量和類方法,在類的外部、類內(nèi)部以及子類(后續(xù)講繼承特性時會做詳細(xì)介紹)中,都可以正常訪問;private:私有屬性的類變量和類方法,只能在本類內(nèi)部使用,類的外部以及子類都無法使用。面向?qū)ο蟮娜筇匦訮ython沒有提供public、private這些修飾符。為了實現(xiàn)類的封裝,Python采取了下面的方法:默認(rèn)情況下,Python類中的變量和方法都是公有(public)的,它們的名稱前都沒有下劃線(_);如果類中的變量和方法,其名稱以雙下劃線“__”開頭,則該變量(方法)為私有變量(私有方法),其屬性等同于private。2.繼承
面向?qū)ο缶幊?OOP)語言的一個主要功能就是“繼承”?,F(xiàn)實生活中,子女可以繼承父母的遺產(chǎn),面向?qū)ο笾械睦^承跟這個類似,就是一個類可以直接使用另一個類的屬性和方法,而不需要重新定義。通過繼承創(chuàng)建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”,一般稱“父類”。Python語言的繼承有單繼承和多繼承兩種。面向?qū)ο蟮娜筇匦悦嫦驅(qū)ο蟮娜筇匦?.1單繼承
單繼承就是一個類只能有一個父類,也就是只能繼承自一個類,不能同時繼承多個類,但是一個父類可以同時有多個子類。
單繼承是繼承中比較常用的一種繼承,單繼承的基本語法格式如下:class子類名(父類名)
子類代碼塊人(父類)學(xué)生(子類)工人(子類)教師(子類)……單繼承的結(jié)構(gòu)圖面向?qū)ο蟮娜筇匦悦嫦驅(qū)ο蟮娜筇匦?.2多繼承
與Java語言不用,Python語言可以實現(xiàn)多繼承。例如:一個在職學(xué)生,他既是學(xué)生,又是工人,也就是既具有學(xué)生的屬性和方法,又具有工人的屬性和方法,因此可以說他有兩個父類,此時讓他同時繼承學(xué)生類和工人類即可,這就是多繼承。
多繼承的基本語法格式如下:
class子類名(父類1,父類2……)
子類代碼塊多繼承的結(jié)構(gòu)圖面向?qū)ο蟮娜筇匦詫W(xué)生(父類1)在職學(xué)生(子類)工人(父類2)……面向?qū)ο蟮娜筇匦?.3覆蓋和重寫
在繼承關(guān)系中,子類自動繼承父類的屬性和方法,但是有些時候子類繼承過來的屬性和方法需要有自己的名字和實現(xiàn)方式,此時可以在子類中對父類的屬性和方法進(jìn)行重新賦值或者重新寫入。一般屬性的重新賦值叫覆蓋,方法的重新寫入叫重寫。覆蓋和重寫時注意,子類需要覆蓋的屬性名稱必須與父類的屬性名完全相同,子類需要重寫的方法名和參數(shù)列表必須與父類的方法名和參數(shù)列表完全相同。面向?qū)ο蟮娜筇匦?.多態(tài)
多態(tài)(Polymorphism)按字面的意思就是“多種狀態(tài)”。在面向?qū)ο笳Z言中,多態(tài)就是可以使用相同的方法名實現(xiàn)不同的功能,就是說可以用一個方法名調(diào)用不同內(nèi)容(功能)的方法。Python的多態(tài)性是指:在不考慮實例類型的情況下使用實例,也就是說不同類型的實例有相同的調(diào)用方法,比如人、貓、狗等等只要是繼承了Animal就可以直接調(diào)用它的move()方法。面向?qū)ο蟮娜筇匦远鄳B(tài)的特點有:只關(guān)心對象的實例方法是否同名,不關(guān)心對象所屬的類型;對象所屬的類之間,繼承關(guān)系可有可無;多態(tài)的好處可以增加代碼的外部調(diào)用靈活度,讓代碼更加通用,兼容性比較強;多態(tài)是調(diào)用方法的技巧,不會影響到類的內(nèi)部設(shè)計。
類屬性和類方法Python
語言中一切皆是對象:classAAA:
定義的類屬于類對象,obj1=AAA()
創(chuàng)建的對象屬于實例對象。使用類創(chuàng)建出來的對象叫做類的實例,創(chuàng)建對象的動作叫做實例化,對象的屬性叫做實例屬性,對象調(diào)用的方法叫做實例方法。在程序執(zhí)行時,對象各自擁有自己的實例屬性,調(diào)用自己的實例方法,可以通過self訪問自己的屬性和調(diào)用自己的方法。在
Python
中,類是一個特殊的對象——
類對象,在程序運行時,類同樣會被加載到內(nèi)存,類對象在內(nèi)存中只有一份,使用一個類可以創(chuàng)建出很多個對象實例,除了封裝實例的屬性和方法外,類對象還可以擁有自己的屬性和方法,稱為類屬性和類方法,通過類名.
的方式可以訪問類的屬性或者調(diào)用類的方法。類屬性和類方法1.類屬性
類屬性就是類所擁有的屬性,通常用來記錄與這個類相關(guān)的特征,類屬性不會用于記錄具體對象的特征。類屬性需要在類中顯式的定義(位于類中所有方法的外部,定義在方法內(nèi)部的屬性是實例屬性),能被類的所有實例共用。定義類屬性的基本格式如下:class類名:
類屬性
def方法名():
實例屬性類屬性和類方法
類屬性既可以使用類名訪問,也可以使用實例名訪問,但是一般情況下我們提倡使用類名訪問類屬性。原因如下:使用實例名訪問類屬性時,可能會出現(xiàn)你不想要的結(jié)果。如果出現(xiàn)類屬性和實例屬性具有相同名稱,那么訪問類屬性只能使用類名,如果使用實例名則訪問到的是實例屬性。類屬性和類方法2.類方法
類方法就是針對類對象定義的方法,在類方法內(nèi)部可以直接訪問類屬性或者調(diào)用其他的類方法。其基本語法格式如下:class類名:@classmethoddef類方法名(cls):
方法體類屬性和類方法
類方法需要用修飾器@classmethod來標(biāo)識,告訴解釋器這是一個類方法。類方法的第一個參數(shù)應(yīng)該是
cls,由哪一個類調(diào)用的方法,方法內(nèi)的
cls
就是哪一個類的引用,這個參數(shù)和實例方法的第一個參數(shù)是
self
類似(使用其他名稱也可以,不過習(xí)慣使用
cls)。通過“類名.
類方法”名來調(diào)用類方法,調(diào)用方法時不需要傳遞
cls
參數(shù),在方法內(nèi)部,可以通過
“cls.屬性”來訪問類的屬性,也可以通過
“cls.方法”調(diào)用其他的類方法。既可以通過類名調(diào)用類方法,也可以通過對象名調(diào)用類方法,這兩種方式是一樣的。游戲模塊—pygame模塊本項目是制作一個小游戲,因此還需要用到一個專門的游戲模塊——pygame模塊。pygame是Python專門用來制作游戲的一個模塊,可以顯示文字,繪制圖形(比如圓形、三角形等),顯示圖片,實現(xiàn)動畫效果,能夠與鍵盤、鼠標(biāo)、游戲手柄等外設(shè)交互,播放聲音,支持碰撞檢測。下面簡單了解本項目中pygame模塊中常用到的一些模塊和方法。游戲模塊—pygame模塊1.安裝pygame
由于Pycharm本身沒有游戲模塊,因此使用時首先需要安裝第三方庫pygame模塊,具體安裝步驟見教材。2.使用pygame模塊
在安裝好了pygame模塊以后,我們只需要在程序的開頭使用“importpygame”將它包含進(jìn)來即可以使用。在使用時,根據(jù)需要選擇pygame模塊中的函數(shù)進(jìn)行設(shè)置。游戲模塊—pygame模塊pygame
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年全自動變焦照相機(jī)項目資金申請報告代可行性研究報告
- 2024年變頻器柜體系統(tǒng)項目資金籌措計劃書
- 2025年河南省三門峽市單招職業(yè)適應(yīng)性測試題庫匯編
- 2025年湖北省荊門市單招職業(yè)傾向性測試題庫匯編
- 2025年黑龍江商業(yè)職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫一套
- 兒童樂園裝修合同
- 2025年度安全培訓(xùn)與操作規(guī)范服務(wù)協(xié)議
- 2025年度員工勞動合同終止及生活困難補助協(xié)議
- 2025陜西省安全員C證考試(專職安全員)題庫附答案
- 2025年度房屋贈與及物業(yè)管理權(quán)轉(zhuǎn)移合同
- 固體廢棄物管理培訓(xùn)
- 硬件工程師職業(yè)生涯規(guī)劃
- 【高新技術(shù)企業(yè)所得稅稅務(wù)籌劃探析案例:以科大訊飛為例13000字(論文)】
- 提升管理層領(lǐng)導(dǎo)力的酒店管理培訓(xùn)課程
- 思維導(dǎo)圖在初中英語復(fù)習(xí)課中的應(yīng)用研究的中期報告
- 絕對干貨!國有企業(yè)總經(jīng)理辦公會決策事項及總經(jīng)理職責(zé)清單
- 高教社2023馬工程國際私法學(xué)教學(xué)課件u15
- 2022年春新教科版科學(xué)六年級下冊第4單元《物質(zhì)的變化》教案
- 蘇教版六年級下冊數(shù)學(xué) 用“轉(zhuǎn)化”的策略解決問題 教案(教學(xué)設(shè)計)
- 2-變電站安全工器具
- (完整word版)鋼琴五線譜(高音譜號、低音譜號、空白)可
評論
0/150
提交評論