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.重寫:子類重寫父類的方法
多態(tài)的優(yōu)點(diǎn):
多態(tài)可以增加程序的靈活性
增加程序的擴(kuò)展性
只要具備某種方法,無論繼承者是誰,定義者是誰,都可以去調(diào)用


案例演示
class Animal:
def say_who(self):
'''
父類【基類】
:return:
'''
print('你是一個(gè)動(dòng)物')
pass
pass
class Duck(Animal):
'''
繼承于animal這個(gè)類 鴨子類【子類】派生類
'''
def say_who(self):
'''
在這里重寫父類的方法
: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):
'''
在這里重寫父類的方法
: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) #通過函數(shù)統(tǒng)一調(diào)用

增加新類完全無需修改代碼,只需將需要的代碼添加上就是了
# 案例演示
class Animal:
def say_who(self):
'''
父類【基類】
:return:
'''
print('你是一個(gè)動(dòng)物')
pass
pass
class Duck(Animal):
'''
繼承于animal這個(gè)類 鴨子類【子類】派生類
'''
def say_who(self):
'''
在這里重寫父類的方法
:return:
'''
print('我是鴨鴨丫')
pass
class Dog(Animal):
def say_who(self):
print('只是一只汪罷了')
pass
pass
class Bird(Animal):
def say_who(self):
print('門前大橋下,停著一只鳥')
# 使用統(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) #通過函數(shù)統(tǒng)一調(diào)用

總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python中urlencode()函數(shù)構(gòu)建URL查詢字符串的利器學(xué)習(xí)
這篇文章主要為大家介紹了Python中urlencode()函數(shù)構(gòu)建URL查詢字符串的利器學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
python-OpenCV 實(shí)現(xiàn)將數(shù)組轉(zhuǎn)換成灰度圖和彩圖
今天小編就為大家分享一篇python-OpenCV 實(shí)現(xiàn)將數(shù)組轉(zhuǎn)換成灰度圖和彩圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
關(guān)于Python中的海象運(yùn)算符使用方法詳解
這篇文章主要介紹了關(guān)于Python中的海象運(yùn)算符“:=”使用方法詳解,海象運(yùn)算符(walrus?operator)是?Python?3.8?中引入的一種新的語法,需要的朋友可以參考下2023-04-04
python中使用pyhook實(shí)現(xiàn)鍵盤監(jiān)控的例子
這篇文章主要介紹了python中使用pyhook實(shí)現(xiàn)鍵盤監(jiān)控的例子,包含pyhook的下載地址和手冊(cè)地址及一個(gè)Windows下的監(jiān)控實(shí)例,需要的朋友可以參考下2014-07-07
Python中的進(jìn)程操作模塊(multiprocess.process)
這篇文章介紹了Python中的進(jìn)程操作模塊(multiprocess.process),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問題
這篇文章主要介紹了Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

