python基礎(chǔ)之多態(tài)
多態(tài)
多態(tài):顧名思義九四多種形態(tài)\狀態(tài),就是同一種行為對(duì)不同的子類[對(duì)象]有不同的行為表現(xiàn)
要想實(shí)現(xiàn)多態(tài) 必須有兩個(gè)前提需要遵守:
1.必須存在一種繼承關(guān)系,必須發(fā)生在父類和子類之間
2.重寫(xiě):子類重寫(xiě)父類的方法
多態(tài)的優(yōu)點(diǎn):
多態(tài)可以增加程序的靈活性
增加程序的擴(kuò)展性
只要具備某種方法,無(wú)論繼承者是誰(shuí),定義者是誰(shuí),都可以去調(diào)用
案例演示
class Animal: def say_who(self): ''' 父類【基類】 :return: ''' print('你是一個(gè)動(dòng)物') pass pass class Duck(Animal): ''' 繼承于animal這個(gè)類 鴨子類【子類】派生類 ''' def say_who(self): ''' 在這里重寫(xiě)父類的方法 :return: ''' print('我是鴨鴨丫') pass class Dog(Animal): def say_who(self): print('只是一只汪罷了') pass pass duck1=Duck() duck1.say_who() dog=Dog() dog.say_who()
class Animal: def say_who(self): ''' 父類【基類】 :return: ''' print('你是一個(gè)動(dòng)物') pass pass class Duck(Animal): ''' 繼承于animal這個(gè)類 鴨子類【子類】派生類 ''' def say_who(self): ''' 在這里重寫(xiě)父類的方法 :return: ''' print('我是鴨鴨丫') pass class Dog(Animal): def say_who(self): print('只是一只汪罷了') pass pass # 使用統(tǒng)一的函數(shù)去調(diào)用 def commonInvoke(obj): ''' 同意調(diào)用的方法 :param obj: 對(duì)象的實(shí)例 :return: ''' obj.say_who() # duck1=Duck() # duck1.say_who() # dog=Dog() # dog.say_who() listObj=[Duck(),Dog()] for item in listObj: ''' 循環(huán)調(diào)用函數(shù) ''' commonInvoke(item) #通過(guò)函數(shù)統(tǒng)一調(diào)用
增加新類完全無(wú)需修改代碼,只需將需要的代碼添加上就是了
# 案例演示 class Animal: def say_who(self): ''' 父類【基類】 :return: ''' print('你是一個(gè)動(dòng)物') pass pass class Duck(Animal): ''' 繼承于animal這個(gè)類 鴨子類【子類】派生類 ''' def say_who(self): ''' 在這里重寫(xiě)父類的方法 :return: ''' print('我是鴨鴨丫') pass class Dog(Animal): def say_who(self): print('只是一只汪罷了') pass pass class Bird(Animal): def say_who(self): print('門(mén)前大橋下,停著一只鳥(niǎo)') # 使用統(tǒng)一的函數(shù)去調(diào)用 def commonInvoke(obj): ''' 同意調(diào)用的方法 :param obj: 對(duì)象的實(shí)例 :return: ''' obj.say_who() # duck1=Duck() # duck1.say_who() # dog=Dog() # dog.say_who() listObj=[Duck(),Dog(),Bird()] for item in listObj: ''' 循環(huán)調(diào)用函數(shù) ''' commonInvoke(item) #通過(guò)函數(shù)統(tǒng)一調(diào)用
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。