




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PYTHON學習教程資源:類和實例代碼操作練習面向對象最重要的概念就是類(Class)和實例(Instance),必須牢記類是抽象的模板,比如Student類,而實例是根據類創建出來的一個個具體的“對象”,每個對象都擁有相同的方法,但各自的數據可能不同。仍以Student類為例,在Python中,定義類是通過class關鍵字:classStudent(object):passclass后面緊接著是類名,即Student,類名通常是大寫開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的,繼承的概念我們后面再講,通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承的類。定義好了Student類,就可以根據Student類創建出Student的實例,創建實例是通過類名+()實現的:>>>bart=Student()>>>bart<__main__.Studentobjectat0x10a67a590>>>>Student<class'__main__.Student'>可以看到,變量bart指向的就是一個Student的實例,后面的0x10a67a590是內存地址,每個object的地址都不一樣,而Student本身則是一個類??梢宰杂傻亟o一個實例變量綁定屬性,比如,給實例bart綁定一個name屬性:>>>='BartSimpson'>>>'BartSimpson'由于類可以起到模板的作用,因此,可以在創建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個特殊的__init__方法,在創建實例的時候,就把name,score等屬性綁上去:classStudent(object):def__init__(self,name,score):=nameself.score=score
注意:特殊方法“__init__”前后分別有兩個下劃線?。?!注意到__init__方法的第一個參數永遠是self,表示創建的實例本身,因此,在__init__方法內部,就可以把各種屬性綁定到self,因為self就指向創建的實例本身。有了__init__方法,在創建實例的時候,就不能傳入空的參數了,必須傳入與__init__方法匹配的參數,但self不需要傳,Python解釋器自己會把實例變量傳進去:>>>bart=Student('BartSimpson',59)>>>'BartSimpson'>>>bart.score59和普通的函數相比,在類中定義的函數只有一點不同,就是第一個參數永遠是實例變量self,并且,調用時,不用傳遞該參數。除此之外,類的方法和普通函數沒有什么區別,所以,你仍然可以用默認參數、可變參數、關鍵字參數和命名關鍵字參數。數據封裝面向對象編程的一個重要特點就是數據封裝。在上面的Student類中,每個實例就擁有各自的name和score這些數據。我們可以通過函數來訪問這些數據,比如打印一個學生的成績:>>>defprint_score(std):...print('%s:%s'%(,std.score))...>>>print_score(bart)BartSimpson:59但是,既然Student實例本身就擁有這些數據,要訪問這些數據,就沒有必要從外面的函數去訪問,可以直接在Student類的內部定義訪問數據的函數,這樣,就把“數據”給封裝起來了。這些封裝數據的函數是和Student類本身是關聯起來的,我們稱之為類的方法:classStudent(object):def__init__(self,name,score):=nameself.score=scoredefprint_score(self):print('%s:%s'%(,self.score))要定義一個方法,除了第一個參數是self外,其他和普通函數一樣。要調用一個方法,只需要在實例變量上直接調用,除了self不用傳遞,其他參數正常傳入:>>>bart.print_score()BartSimpson:59這樣一來,我們從外部看Student類,就只需要知道,創建實例需要給出name和score,而如何打印,都是在Student類的內部定義的,這些數據和邏輯被“封裝”起來了,調用很容易,但卻不用知道內部實現的細節。封裝的另一個好處是可以給Student類增加新的方法,比如get_grade:classStudent(object):...defget_grade(self):ifself.score>=90:return'A'elifself.score>=60:return'B'else:return'C'同樣的,get_grade方法可以直接在實例變量上調用,不需要知道內部實現細節:#-*-coding:utf-8-*-lisa=Student('Lisa',99)bart=Student('Bart',59)print(,lisa.get_grade())print(,bart.get_grade())
Run小結類是創建實例的模板,而實例則是一個一個具體的對象,各個實例擁有的數據都互相獨立,互不影響;方法就是與實例綁定的函數,和普通函數不同,方法可以直接訪問實例的數據;通過在實例上調用方法,我們就直接操作了對象內部的數據,但無需知道方法內部的實現細節。和靜態語言不同,Python允許對實例變量綁定任何數據,也就是說,對于兩個實例變量,雖然它們都是同一個類的不同實例,但擁有的變量名稱都可能不同:>>>bart=Student('BartSimpson',59)>>>lisa=Student('LisaSimpson',87)>>>bart.age=8>>>bart.a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 聊城大學《秘書應用寫作》2023-2024學年第二學期期末試卷
- 長春建筑學院《室內三維軟件應用前期》2023-2024學年第二學期期末試卷
- 濰坊理工學院《現代分析技術進展》2023-2024學年第二學期期末試卷
- 重慶八中2025年下學期期中考高三試卷物理試題含解析
- 吉林財經大學《計算機數學基礎》2023-2024學年第二學期期末試卷
- 白銀希望職業技術學院《生物制藥技術》2023-2024學年第一學期期末試卷
- 遼寧金融職業學院《市政公園景觀設計》2023-2024學年第二學期期末試卷
- 七年級語文上冊 第五單元 第19課 動物笑談教學設計 新人教版
- 閃閃紅星(教學設計)-2024-2025學年贛美版(2024)美術一年級上冊
- 浙教版信息技術七上第1課《現代信息技術》教學設計
- 初中生防性防侵害安全教育
- 2024年度-小學語文教師經驗交流
- 國開(中央電大)《教育學》網上形考-(任務1至4)試題及答案
- 政務號短視頻運營方案案例解析
- 化工項目可行性研究報告
- 資產評估公司銷售培訓課件
- 銷售人員財務知識培訓課件
- 種子學完整分
- 采購需求預測與物料計劃
- 聽力篩查疾病演示課件
- 激光切割操作管理制度
評論
0/150
提交評論