




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《Python語言程序設(shè)計》?精品課件合集Python語言程序設(shè)計第8章面向?qū)ο蟪绦蛟O(shè)計設(shè)計一個功能強大且易于被人們掌握的程序設(shè)計語言,一直是編程語言發(fā)展的目標。早期的程序設(shè)計語言是面向過程(ProcedureOriented)的,其主要設(shè)計目標是解決現(xiàn)實中的某個具體的計算問題,而現(xiàn)在流行的大多數(shù)程序設(shè)計語言是面向?qū)ο螅∣bjectOriented)的,這類語言的設(shè)計目標是用計算機程序來描述現(xiàn)實世界某類問題的相關(guān)特征,從而提升計算機程序解決實際問題的能力。Python正是眾多面向?qū)ο蟮木幊陶Z言之一。引言2/33第8章面向?qū)ο蟪绦蛟O(shè)計8.1類和對象面向?qū)ο缶幊淌潜M可能模擬人類的思維方式,使得軟件的開發(fā)方法與過程盡可能接近人類認識世界、解決現(xiàn)實問題的方法和過程,是最有效的編程方法之一。人類通過將事物進行分類來認識世界。比如,將自然界中的事物分為生物和非生物,將生物分為動物、植物、微生物,將動物分為有脊椎動物和無脊椎動物,繼而又分為哺乳類、鳥類、魚類、爬行類等,其中,哺乳類又分為貓、狗、牛、羊等。每一個類的個體都具有一些相同的屬性,在面向?qū)ο缶幊讨?,個體被稱為對象或?qū)嵗?。類和對?/33在面向?qū)ο缶幊讨?,可以用程序表示現(xiàn)實世界中的類,并基于這些類來創(chuàng)建對象。編寫一個類的程序時,需要定義類的對象都有的通用行為。之后再基于定義好的類創(chuàng)建對象時,每個對象都自動具備這種通用行為,然后再根據(jù)實際需要賦予每個對象獨特的個性。類和對象5/33在面向?qū)ο缶幊讨校梢杂贸绦虮硎粳F(xiàn)實世界中的類,并基于這些類來創(chuàng)建對象。編寫一個類的程序時,需要定義類的對象都有的通用行為。之后再基于定義好的類創(chuàng)建對象時,每個對象都自動具備這種通用行為,然后再根據(jù)實際需要賦予每個對象獨特的個性。由類的定義來創(chuàng)建對象的過程被稱為實例化,本章將介紹如何在程序中定義類,并創(chuàng)建這些類的對象,在對象中存儲與之有關(guān)的信息,并調(diào)用對象的方法完成指定的操作,以及通過類的繼承實現(xiàn)代碼共享的方法。類和對象6/33Python語言中使用關(guān)鍵字class定義類,其語法格式如下:class類名:
類的定義語句有上述語法格式可知,一個最簡單的類的定義可以是這樣的:類的定義與實例化7/33上述程序中,定義了一個名為Person的類,這個類沒有任何具體的內(nèi)容,如果希望創(chuàng)建該類的對象,即對類進行實例化,可以使用如下代碼:上述程序中還使用了內(nèi)置函數(shù)isinstance(),該函數(shù)用于檢測對象和類之間的關(guān)系,其語法格式如下:isinstance(object,classinfo)其中,如果參數(shù)object是參數(shù)classinfo的實例則返回True,否則返回False。如果參數(shù)classinfo是類型對象元組,那么如果參數(shù)object是其中任何一個類型的實例就返回True,否則返回False。創(chuàng)建對象(實例化)8/33Python語言中,創(chuàng)建對象的過程,其本質(zhì)就是去調(diào)用定義在類中的一個特殊方法__init__(),該方法的第一個參數(shù)用于表示對象本身,其后的參數(shù)用于接收實例化過程中對象屬性的初始值,例如:初始化方法__init__()9/33創(chuàng)建了Person類的對象后,就可以在程序中訪問對象的各個屬性,例如:訪問對象的屬性10/33觀察程序的運行結(jié)果可知,調(diào)用對象的屬性或者方法可以使用如下語法格式:對象名.屬性名其中,運算符.被稱為成員運算符,表示了對象和屬性之間的所屬關(guān)系,可以理解為自然語言中的“的”。類的定義中,除了__init__()方法用于進行實例化的操作,程序員還可以定義其他的方法表示該類的對象所具備的各種功能,例如(見下頁):調(diào)用對象的方法11/33調(diào)用對象的方法(續(xù))12/33__init__()方法的定義中,代表各屬性初始值的參數(shù)也可以使用默認參數(shù)值,例如:觀察程序的運行結(jié)果可知,程序例8_6中的Person對象在調(diào)用__init__()方法進行實例化時,使用了默認性別“男”和默認年齡19完成了對象的屬性賦值。以默認值進行實例化13/33對象的屬性可以直接使用賦值語句進行添加和修改,同時使用del語句可以刪除對象的屬性,例如:與此同時,Python還提供了一系列內(nèi)置函數(shù)用于操作對象的屬性,見下頁屬性的添加、修改和刪除14/33(1)內(nèi)置函數(shù)getattr()可以用于獲取對象的屬性,其語法格式如下:getattr(object,name[,default])其中,參數(shù)object表示待訪問的對象,參數(shù)name表示對象object的某個屬性,必須以字符串的形式給出。當參數(shù)name指定的屬性不存在時,函數(shù)將返回參數(shù)default的內(nèi)容,此時若沒有指定參數(shù)default的內(nèi)容,則函數(shù)在調(diào)用時會產(chǎn)生AttributeError錯誤,例如:操作對象屬性的內(nèi)置函數(shù)15/33(2)內(nèi)置函數(shù)hasattr()可以判斷對象中是否包含指定的屬性,其語法格式如下:hasattr(object,name)如果參數(shù)object中包含名為name的屬性,則函數(shù)返回True,否則返回False,例如:操作對象屬性的內(nèi)置函數(shù)(續(xù))16/33(3)內(nèi)置函數(shù)setattr()可以設(shè)置對象的屬性值,其語法格式如下:setattr(object,name,value)其中,參數(shù)object表示待訪問的對象,參數(shù)name表示對象object的某個屬性,必須以字符串的形式給出,參數(shù)value表示設(shè)置給該屬性的屬性值,例如:操作對象屬性的內(nèi)置函數(shù)(續(xù))17/33(4)內(nèi)置函數(shù)delattr()可以刪除對象的屬性,其語法格式如下:delattr(object,name)其中,參數(shù)object表示待訪問的對象,參數(shù)name表示對象object的某個屬性,必須以字符串的形式給出,例如:操作對象屬性的內(nèi)置函數(shù)(續(xù))18/33日常生活中,會需要隱藏對象的某些重要屬性,比如人們通常會隱藏自己的身份證號。為了在程序中將屬性和方法隱藏在對象中,可以將它們定義成私有屬性和私有方法,具體的操作是在屬性或方法的名字之前加上兩根下劃線,例如:私有屬性和私有方法19/33觀察上述程序的運行結(jié)果可知,無論是屬性name或是屬性__name都無法在外部程序中被訪問,但是定義在類體中的程序是可以對這些私有屬性進行正常訪問的,例如:私有屬性和私有方法(續(xù))20/33特別注意的是,若在外部程序中對屬性__name進行賦值,等價于創(chuàng)建了一個新的屬性,而非對私有屬性__name的修改,例如:私有屬性和私有方法(續(xù))21/33實際編程中,會遇到需要創(chuàng)建某類對象的共有屬性的需求,比如以下程序中表示學(xué)生總數(shù)的屬性count,這種可以被類的對象共享的屬性被稱為類屬性。類屬性22/33當對象中包含與類屬性同名的屬性時,程序會優(yōu)先訪問對象屬性中的內(nèi)容,例如:類屬性(續(xù))23/33第8章面向?qū)ο蟪绦蛟O(shè)計8.2類的繼承面向?qū)ο缶幊處淼闹饕锰幹皇谴a重用,代碼重用的方法之一就是類的繼承。一個類繼承另一個類時,它將自動獲得另一個類的所有屬性和除__init__()以外的所有方法;被繼承的類稱為父類,從父類繼承得到的類稱為子類。子類除了繼承其父類的屬性和方法以外,還可以定義自己的屬性和方法。所以,類的繼承可以理解為子類在父類的基礎(chǔ)上進行了功能的擴展。類的繼承25/33Python語言中,類的繼承是在定義子類時實現(xiàn)的,其語法格式如下:class子類(父類1[,父類2[,…[,父類n]]]):
類的定義語句觀察上述語法格式可知,Python中一個子類可以繼承于多個父類,只需將父類名寫入子類名后面的括號中即可。本書以Person類和Student類演示類的繼承關(guān)系,其程序見下頁類的繼承的程序?qū)崿F(xiàn)26/33類的繼承的程序?qū)崿F(xiàn)(續(xù))27/33如果需要在程序中對兩個類之間的關(guān)系進行判定,可以使用內(nèi)置函數(shù)issubclass(),其語法格式如下:issubclass(class,classinfo)其中,如果參數(shù)class是參數(shù)classinfo的直接或者間接子類則返回True,否則返回False,例如我們在交互方式中對上述程序定義的Person和Student類進行關(guān)系判定,效果如下:類的關(guān)系判定28/33和現(xiàn)實中對象與類的關(guān)系一樣,如果一個對象是學(xué)生,那么該對象肯定屬于人類,所以使用Student類創(chuàng)建的對象也是Person類的對象,程序見下頁:子類的對象也屬于父類29/33子類的對象也屬于父類(續(xù))30/33在子類中,可以對父類原有的方法進行改進,這種對父類中已有方法的重新定義,被稱為方法的覆蓋,程序見下頁:子類方法對父類方法的覆蓋31/3332/33內(nèi)置函數(shù)super()上述程序中,在子類Student中也定義了say()方法,其中除了調(diào)用父類的say()方法以外,還額外打印了自己的學(xué)號屬性,程序中使用內(nèi)置函數(shù)super()來表示父類,該函數(shù)的語法格式如下:super([type])如果當前子類的父類是惟一的,那么參數(shù)type可以省略,但是如果當前子類是繼承于多個父類的時候,則需要使用參數(shù)type指定super()函數(shù)到底代表的是哪一個父類。33/33第8章面向?qū)ο蟪绦蛟O(shè)計8.3本章小結(jié)本章小結(jié)本章介紹了面向?qū)ο缶幊痰南嚓P(guān)知識,包括類的定義、對象的創(chuàng)建、對象及其屬性和方法的使用、類的繼承、子類和父類的關(guān)系等。35/33本章小結(jié)本章介紹了面向?qū)ο缶幊痰南嚓P(guān)知識,包括類的定義、對象的創(chuàng)建、對象及其屬性和方法的使用、類的繼承、子類和父類的關(guān)系等。Python語言中,使用class關(guān)鍵字進行類的定義,之后再創(chuàng)建類的對象,這個過程也被稱為實例化,所以對象又被稱為類的實例。在創(chuàng)建對象時,會自動調(diào)用類的__init__()方法進行對象的初始化,通過對該方法進行參數(shù)傳遞,可以為對象設(shè)置初始的屬性。在屬性名前加上兩根下劃線,可以將屬性和方法設(shè)置為私有屬性或私有方法,私有屬性和私有方法不能在類的外部被使用。36/33本章小結(jié)本章介紹了面向?qū)ο缶幊痰南嚓P(guān)知識,包括類的定義、對象的創(chuàng)建、對象及其屬性和方法的使用、類的繼承、子類和父類的關(guān)系等。Python語言中,使用class關(guān)鍵字進行類的定義,之后再創(chuàng)建類的對象,這個過程也被稱為實例化,所以對象又被稱為類的實
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆安徽省高三下學(xué)期鼎尖預(yù)測大聯(lián)考政治試卷(原卷版+解析版)
- 愛國衛(wèi)生運動工作實施方案(28篇)
- 語言學(xué)與文化研究專項練習(xí)題集
- 浙江國企招聘2025寧波高新區(qū)投資管理集團有限公司及下屬子公司招聘36人筆試參考題庫附帶答案詳解
- 2025天津市武清區(qū)國有資產(chǎn)經(jīng)營投資有限公司招聘13人筆試參考題庫附帶答案詳解
- 2025四川華豐科技股份有限公司招聘客服經(jīng)理等崗位6人筆試參考題庫附帶答案詳解
- 環(huán)衛(wèi)一體化提升項目實施方案分析
- 合同雙方責(zé)任協(xié)議書
- 車輛油漆施工合同協(xié)議書
- 證書合同協(xié)議書
- 掌握認知重構(gòu)的基本技巧
- 新能源綜合能源系統(tǒng)的設(shè)計與優(yōu)化
- 中國居民膳食指南(全)
- 《數(shù)據(jù)可視化》期末考試復(fù)習(xí)題庫(含答案)
- 乳腺結(jié)節(jié)課件
- 小學(xué)綜合實踐活動課二年級上冊《彩蛋不倒翁》公開課教學(xué)課件
- 2023發(fā)電企業(yè)運行管理辦法
- 醫(yī)院勞務(wù)派遣投標方案(技術(shù)方案)
- 中醫(yī)外科學(xué)周圍血管及淋巴管疾病課件
- 防火卷簾施工方案
- 小學(xué)英語《Module-3-Things-around-us》課件設(shè)計
評論
0/150
提交評論