物聯(lián)網(wǎng)Python編程實(shí)戰(zhàn) 課件 6.面向?qū)ο笕筇匦?多態(tài)_第1頁(yè)
物聯(lián)網(wǎng)Python編程實(shí)戰(zhàn) 課件 6.面向?qū)ο笕筇匦?多態(tài)_第2頁(yè)
物聯(lián)網(wǎng)Python編程實(shí)戰(zhàn) 課件 6.面向?qū)ο笕筇匦?多態(tài)_第3頁(yè)
物聯(lián)網(wǎng)Python編程實(shí)戰(zhàn) 課件 6.面向?qū)ο笕筇匦?多態(tài)_第4頁(yè)
物聯(lián)網(wǎng)Python編程實(shí)戰(zhàn) 課件 6.面向?qū)ο笕筇匦?多態(tài)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο笕筇匦越K電子職業(yè)學(xué)院Python物聯(lián)網(wǎng)03多態(tài)面向?qū)ο蠖鄳B(tài)概念所有屬于同一個(gè)類的對(duì)象都具有相同的特性和操作所謂多態(tài)(polymorphism),是指基類的同一個(gè)方法在不同派生類對(duì)象中具有不同的表現(xiàn)和行為。派生類繼承了基類行為和屬性之后,還會(huì)增加某些特定的行為和屬性;派出類還可能會(huì)對(duì)繼承來的某些行為進(jìn)行一定的改變,比如重寫。Python大多數(shù)運(yùn)算符可以作用于多種不同類型的操作數(shù),并且對(duì)于不同類型的操作數(shù)往往有不同的表現(xiàn),這本身就是多態(tài),是通過特殊方法與運(yùn)算符重載實(shí)現(xiàn)的。多態(tài)表現(xiàn)所有屬于同一個(gè)類的對(duì)象都具有相同的特性和操作同一個(gè)方法talk()在不同派生類對(duì)象中具有不同的表現(xiàn)和行為。classAnimal:#同一類事物:動(dòng)物

deftalk(self):passclassCat(Animal):#動(dòng)物的形態(tài)之一:貓

deftalk(self):print('喵喵喵')classDog(Animal):#動(dòng)物的形態(tài)之二:狗

deftalk(self):print('汪汪汪')classPig(Animal):#動(dòng)物的形態(tài)之三:豬

deftalk(self):print('哼哼哼')cat=Cat()cat.talk()dog=Dog()dog.talk()pig=Pig()pig.talk()面向?qū)ο蠖鄳B(tài)表現(xiàn)所有屬于同一個(gè)類的對(duì)象都具有相同的特性和操作對(duì)于上一頁(yè)的方法重寫表現(xiàn)的多態(tài),我們可以更進(jìn)一步。我們可以定義一個(gè)統(tǒng)一的接口(方法)來使用talk()方法。

defdotalk(self,animal):

animal.talk()通過父類變量調(diào)用doalk()方法,傳入子類對(duì)象。傳入子類的對(duì)象不同,表現(xiàn)出不同的形態(tài)。classAnimal:#同一類事物:動(dòng)物

deftalk(self):passdefdotalk(self,animal):animal.talk()classCat(Animal):#動(dòng)物的形態(tài)之一:貓

deftalk(self):print('喵喵喵')classDog(Animal):#動(dòng)物的形態(tài)之二:狗

deftalk(self):print('汪汪汪')classPig(Animal):#動(dòng)物的形態(tài)之三:豬

deftalk(self):print('哼哼哼')a=Animal()#創(chuàng)建父類對(duì)象cat=Cat()a.dotalk(cat)#通過父類變量調(diào)用方法,傳入子類對(duì)象。dog=Dog()a.dotalk(dog)pig=Pig()a.dotalk(pig)Isinstance和issubclass多態(tài)所有屬于同一個(gè)類的對(duì)象都具有相同的特性和操作Isinstance:isinstance可以判斷一個(gè)變量是否是某一種數(shù)據(jù)類型;還可以某個(gè)對(duì)象是否是這個(gè)類或其子類的對(duì)象。返回的是一個(gè)bool類型數(shù)據(jù),True或False。issubclass:用來判斷一個(gè)類是否是某個(gè)類的子類,返回的是一個(gè)bool類型數(shù)據(jù),True或False。classFoo:def__init__(self,name,age):=nameself.age=age

classSon(Foo):passobj=Son("xiaoming",18)#輸出Obj是不是FOO或其子類的對(duì)象print(isinstance(obj,Foo))#輸出Son是不是Foo的子類print(issubclass(Son,Foo))用面向?qū)ο髢?yōu)化數(shù)據(jù)庫(kù)操作多態(tài)應(yīng)用所有屬于同一個(gè)類的對(duì)象都具有相同的特性和操作在一個(gè)系統(tǒng)中數(shù)據(jù)庫(kù)連接不同的模塊經(jīng)常用到,所以數(shù)據(jù)庫(kù)可以定義成一個(gè)共用的類,包含一個(gè)數(shù)據(jù)庫(kù)連接方法。每一個(gè)數(shù)據(jù)庫(kù)表的增、刪、改、查封裝成一個(gè)類,包括insert(),delete(),update(),serach()等方法。importpymysqlclassConnDb:defconn(host,user,passwd,db):passimportpymysqlImportConnDb#導(dǎo)入數(shù)據(jù)庫(kù)連接模塊classstudentDAO:definsertStu(self,tupleStu):passdefdeleteStu(self,id):passdefupdateStu(self,tupleStu):passdefserachStu(self,id):passdefserachAll(self):passPython語言程序設(shè)計(jì)3.多態(tài)應(yīng)用:用面向?qū)ο髢?yōu)化數(shù)據(jù)庫(kù)操作在一個(gè)系統(tǒng)中數(shù)據(jù)庫(kù)連接不同的模塊經(jīng)常用到,所以數(shù)據(jù)庫(kù)可以定義成一個(gè)共用的類,包含一個(gè)數(shù)據(jù)庫(kù)連接方法。每一個(gè)數(shù)據(jù)庫(kù)表的增、刪、改、查封裝成一個(gè)類,包括insert(),delete(),update(),serach()等方法。importpymysqlclassConnDb:defconn(host,user,passwd,db):passimportpymysqlImportConnDb#導(dǎo)入數(shù)據(jù)庫(kù)連接模塊classstudentDAO:definsertStu(self,tupleStu):passdefdeleteStu(self,id):

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論