Python程序設(shè)計入門與實戰(zhàn) 課件 9、Python面向?qū)ο骭第1頁
Python程序設(shè)計入門與實戰(zhàn) 課件 9、Python面向?qū)ο骭第2頁
Python程序設(shè)計入門與實戰(zhàn) 課件 9、Python面向?qū)ο骭第3頁
Python程序設(shè)計入門與實戰(zhàn) 課件 9、Python面向?qū)ο骭第4頁
Python程序設(shè)計入門與實戰(zhàn) 課件 9、Python面向?qū)ο骭第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Python面向?qū)ο蟪绦蛟O(shè)計《智能車Python編程設(shè)計》面向?qū)ο蟾攀鲱惖亩x和使用多態(tài)繼承面向?qū)ο螅∣bjectOriented)一種設(shè)計思想面向?qū)ο缶幊蹋∣bjectOrientedProgramming)針對大型軟件設(shè)計提出使軟件設(shè)計靈活,代碼復(fù)用率高面向過程的程序設(shè)計方法將數(shù)據(jù)與數(shù)據(jù)操作相獨立,其中的數(shù)據(jù)操作通過函數(shù)或代碼塊來描述。面向?qū)ο蟪绦蛟O(shè)計方法將數(shù)據(jù)與操作封裝為一個混合整體-類,通過類進(jìn)行數(shù)據(jù)的整體操作并且可以保證數(shù)據(jù)的完整性和一致性。Python是一種面向?qū)ο蟪绦蛟O(shè)計語言在程序中定義新類,并在類中定義變量和函數(shù)。類定義完成之后,可以定義類的對象,并通過對象來訪問各個成員,執(zhí)行程序功能。對象和類對象(Object)一個抽象概念,世間萬物皆對象。動態(tài)部分和靜態(tài)部分靜態(tài):自身‘屬性’,動態(tài):對象的行為類類是封裝對象的屬性和行為的載體。具有相同屬性和行為的一類實體。封裝把對象的屬性和行為封裝隱藏其細(xì)節(jié)。繼承繼承是實現(xiàn)重復(fù)利用的重要手段。子類通過繼承復(fù)用父類的屬性和行為,同時加子類特有的屬性和行為。多態(tài)將父類對象應(yīng)用于子類的特征。一個類衍生出不同的子類,子類繼承父類的特征,也具備自己的特征,調(diào)用不同的對象,實現(xiàn)不同的效果。封裝繼承多態(tài)類的定義格式class類名:

類體類體包括函數(shù)的定義和變量的賦值。舉例,定義一個大雁類:classGeese:pass創(chuàng)建類的實例(定義類的對象)ClassName(parameterlist)ClassName:指定具體的類(必選參數(shù))parameterlist:可省略(沒有創(chuàng)建__init__()方法或該方法只有一個self參數(shù))舉例,創(chuàng)建大雁類實例: wildGoose=Geese()#創(chuàng)建大雁類實例 print(wildGoose)對象的構(gòu)造方法(創(chuàng)建__init__()方法)

1.一個構(gòu)造方法:每當(dāng)創(chuàng)建一個類的新實例(初始化)時,自動執(zhí)行。 2.必須包含self參數(shù)(指向本身的引用),調(diào)用時自動傳遞實際self參數(shù)。

def__init__(self,其它參數(shù)):語句塊例:classGeese:'''大雁類'''def__init__(self):#構(gòu)造方法

print('我是大雁類!')wildGoose=Geese()#創(chuàng)建大雁類實例__init__方法除了self參數(shù),還可以自定義參數(shù),多個參數(shù)使用“,”分割。例:classGeese:'''大雁類'''def__init__(self,beak,wing,claw):#構(gòu)造方法

print('我是大雁類!我有以下特征')print(beak)print(wing)print(claw)beak_1='喙的基部較高'wing_1='翅膀長而尖'claw_1='爪子硬而尖'wildGoose=Geese(beak_1,wing_1,claw_1)#創(chuàng)建大雁類實例析構(gòu)函數(shù)(__del__()方法)

1.用來釋放對象占用的資源,在python回收對象空間(所占內(nèi)存)之前自動執(zhí)行。 2.如果用戶未定義析構(gòu)函數(shù),python將提供一個默認(rèn)的析構(gòu)函數(shù)進(jìn)行必要清理工作。

def__del__(self):語句塊例:classGeese:'''大雁類'''def__init__(self):#構(gòu)造方法

print('我是大雁類!')def__del__(self):#析構(gòu)方法

print("Geese已經(jīng)不存在")wildGoose=Geese()#創(chuàng)建大雁類實例print(wildGoose)delwildGoose創(chuàng)建類的成員并訪問(包括實例方法和數(shù)據(jù)成員)1.創(chuàng)建實例方法并訪問 deffunctionName(self,parameterlist): block functionName:指定方法名,一般小寫字母開頭 self:必要參數(shù),表示類的實例 parameterlist:除self以外的其他參數(shù),可多個 block:方法體,實現(xiàn)具體功能訪問:實例名稱和(.)點操作符InstanceName.functionName(parametervalue)InstanceName:類的實例名稱functionName:調(diào)用的方法名稱Parametervalue:方法對應(yīng)的實際參數(shù)例:classGeese:def__init__(self,neck,wing):print('我是大雁類,我有以下特征:')print(neck)print(wing)deffly(self,state):#定義飛行類方法

print(state)neck_1='脖子長'wing_1='翅膀大'one_geese=Geese(neck_1,wing_1)#創(chuàng)建實例one_geese.fly('一會兒排成人字形')#調(diào)用實例方法訪問創(chuàng)建類的成員并訪問2.創(chuàng)建數(shù)據(jù)成員并訪問數(shù)據(jù)成員:指在類中定義的變量(即屬性)分為兩種:類屬性和實例屬性類屬性:定義在類中,并且在函數(shù)體外的屬性。(所以實例化的對象共享公用的屬性)訪問方式:類名稱或?qū)嵗?屬性實例屬性:定義在類的方法中的屬性,只作用于當(dāng)前實例中。訪問方式:只能通過實例名訪問。例:類屬性classGeese:neck='脖子長'#定義類屬性

wing='翅膀振蕩大'#定義類屬性

def__init__(self):print(Geese.neck)print(Geese.wing)geese=Geese()#創(chuàng)建實例geese.wingGeese.wing例:實例屬性classGeese:def__init__(self):self.neck=“脖子長“#定義實例屬性self.wing='翅膀大'print(self.neck)print(self.wing)geese=Geese()geese.neck#geese.wing#Geese.wing訪問限制1.首尾雙下劃線表示定義特殊方法,一般是系統(tǒng)定義名字,如__init__()2.以單下劃線開頭的表示protected(保護(hù))類型的成員,只允許類本身和子類進(jìn)行訪問,但不能使用”frommoduleimport*”3.雙下劃線表示private(私有)類型的成員,只允許定義該方法的類本身進(jìn)行訪問,而且不能通過類的實例(實例名+屬性名)的方式進(jìn)行訪問,但可以通過”類的實例名._類名__xxx”方式訪問。對象的私有成員通過在變量和方法名之前加上兩個下劃線“__”前綴將其變?yōu)樗接谐蓡T,此時,類之外的任何代碼都將無法訪問私有成員。例:保護(hù)屬性classSwan:'''天鵝類'''_neck='天鵝的脖子很長'#定義保護(hù)屬性

def__init__(self):print(Swan._neck)#類名.屬性swan=Swan()#保護(hù)屬性,可以通過實例名訪問print('直接訪問:',swan._neck)例:私有屬性classSwan:'''天鵝類'''__neck='天鵝的脖子很長’#定義私有屬性

def__init__(self):print('__init__',Swan.__neck)swan=Swan()#創(chuàng)建Swan類的實例#私有屬性,可以‘實例名._類名__XXX’訪問print('加入類名:',swan._Swan__neck)#私有屬性,不能通過實例名訪問出錯print('直接訪問:',swan.__neck)property屬性是一個裝飾器,將方法轉(zhuǎn)換為屬性,從而實現(xiàn)用于計算的屬性。轉(zhuǎn)換為屬性后,可以直接通過方法名來訪問方法,而不需要添加一個小括號()。這樣更簡潔。私有屬性能修改和刪除嗎?屬性---一種特殊形式得成員方法。可讀屬性可讀可修改可刪除屬性classTest:def__init__(self,value):self.__value=valuedef__get(self):returnself.__valuedef__set(self,v):self.__value=vdef__del(self):delself.__valuevalue=property(__get,__set,__del)defshow(self):returnself.__valuetest1=Test(3)test1.show()test1.value#可讀test1.value=2#可修改deltest1.value#可刪除繼承類的繼承是面向?qū)ο蟮闹匾卣?,通過繼承可以更好地劃分類的層次,也是代碼重用的重要手段。實現(xiàn)繼承,表示擁有繼承它的類的所有的公有成員或受保護(hù)成員。父類(基類):被繼承的類;子類(派生類):新的類;例如:“公民”類設(shè)計為一個基類,學(xué)生類和教師類設(shè)計為派生類,它們可以繼承公民類的特征。類的繼承類的繼承格式:class派生類名(基類名1,基類名2,...):

類體繼承關(guān)系圖例1:繼承父類(基類方法)classFruit:color='綠色'defrun(self,color):print('水果是:'+color+'的!')print('水果已經(jīng)成熟')print('水果原來是:'+Fruit.color+'的!')classApple(Fruit):color='紅色'def__init__(self):print('我是蘋果')classOrange(Fruit):color='橙色'def__init__(self):print('我是橘子')apple=Apple()apple.run(apple.color)#雖然沒有run方法,但是繼承了基類方法繼承類的構(gòu)造方法1.經(jīng)典類的寫法:父類名稱.__init__(self,參數(shù)1,參數(shù)2,...)2.新式類的寫法:super(子類,self).__init__(參數(shù)1,參數(shù)2,....)例2:繼承classPerson:def__init__(self,name,age,sex):=nameself.age=ageself.sex=sexdefsetName(self,name):=namedefsetAge(self,age):self.age=agedefsetSex(self,sex):self.sex=sex

defgetName(self):print('姓名:',)defgetAge(self):print('年齡:',self.age)defgetSex(self):print('性別:',self.sex)classTeacher(Person):def__init__(self,name,age,sex,department):#Person.__init__(self,name,age,sex)#繼承父類的構(gòu)造方法

super(Teacher,self).__init__(name,age,sex)self.department=departmentdefsetDepartment(self,department):self.department=departmentdefgetDepartment(self):print('系別:',self.department)多態(tài)多態(tài):不同的子類對象調(diào)用相同的父類方法,產(chǎn)生不同的執(zhí)行結(jié)果。優(yōu)勢特點:1.多態(tài)可以增加代碼的靈活度2.以繼承和重寫父類方法為前提3.是調(diào)用方法的技巧,不會影響到類的內(nèi)部設(shè)計4.多態(tài)更容易編寫出出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化例1:多態(tài)(調(diào)用同一個函數(shù),傳入不同的參數(shù)(對象),可以達(dá)成不同的功能)classDuck(object):#鴨子類

deffly(self):print("鴨子沿著地面飛起來了")classSwan(object):#天鵝類

deffly(self):print("天鵝在空中翱翔")classPlane(object):#飛機類

deffly(self):print("飛機隆隆地起飛了")deffly(obj):#實現(xiàn)飛的功能函數(shù)

obj.fly()duck=Duck()fly(duck)swan=Swan()fly(swan)例2:多態(tài)classHuman(object):#父類:創(chuàng)建“人”類

def__init__(self):

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論