python學(xué)習(xí)手冊(cè)中的python多態(tài)示例代碼
在處理多態(tài)對(duì)象時(shí),只需要關(guān)注它的接口即可,python中并不需要顯示的編寫(像Java一樣)接口,在使用對(duì)象的使用先假定有該接口,如果實(shí)際并不包含,在運(yùn)行中報(bào)錯(cuò)。
class handGun():
def __init__(self):
pass
def fire(self):
print 'handGun fire'
class carbine():
def __init__(self):
pass
def fire(self):
print 'carbine fire'
import handGun
import carbine
class gunFactory():
def __init__(self,gun_type):
self.gun_type = gun_type
def produce(self):
if handGun == self.gun_type:
return handGun.handGun()
else:
return carbine.carbine()
客戶端
fa = gunFactory(handGun)
gun = fa.produce()
/*只要是槍,就認(rèn)為它具有開火的功能,如果沒有開火的功能,程序運(yùn)行中就報(bào)錯(cuò)*/
gun.fire()
可以看到跟一般的靜態(tài)語(yǔ)言相比,python并沒有在語(yǔ)言級(jí)別來保證接口的正確性,只能依靠文檔、代碼來保證(可以在代碼中檢查接口是否存在,hasattr(gun,'fire'))
相關(guān)文章
python文件編譯為pyc后運(yùn)行的實(shí)現(xiàn)步驟
本文主要介紹了python文件編譯為pyc后運(yùn)行的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python編程中非常重要卻又被嚴(yán)重低估的庫(kù)decorator
今天介紹的是一個(gè)已經(jīng)存在十年,但是依舊不紅的庫(kù) decorator,好像很少有人知道他的存在一樣。本篇文章不會(huì)過多的向你介紹裝飾器的基本知識(shí),我會(huì)默認(rèn)你知道什么是裝飾器,并且懂得如何寫一個(gè)簡(jiǎn)單的裝飾器2021-10-10
Python使用socketServer包搭建簡(jiǎn)易服務(wù)器過程詳解
這篇文章主要介紹了Python使用socketServer包搭建簡(jiǎn)易服務(wù)器過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python常見MongoDB數(shù)據(jù)庫(kù)操作實(shí)例總結(jié)
這篇文章主要介紹了Python常見MongoDB數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式詳細(xì)總結(jié)了Python針對(duì)MongoDB數(shù)據(jù)庫(kù)相關(guān)pymongo庫(kù)安裝以及MongoDB數(shù)據(jù)庫(kù)的增刪改查等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-07-07
Python通過VGG16模型實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換操作詳解
這篇文章主要介紹了Python通過VGG16模型實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換操作,結(jié)合實(shí)例形式詳細(xì)分析了Python使用VGG16模型實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換的具體原理、操作步驟與實(shí)現(xiàn)方法,需要的朋友可以參考下2020-01-01

