python學(xué)習(xí)手冊中的python多態(tài)示例代碼
在處理多態(tài)對象時,只需要關(guān)注它的接口即可,python中并不需要顯示的編寫(像Java一樣)接口,在使用對象的使用先假定有該接口,如果實(shí)際并不包含,在運(yùn)行中報(bào)錯。
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)錯*/
gun.fire()
可以看到跟一般的靜態(tài)語言相比,python并沒有在語言級別來保證接口的正確性,只能依靠文檔、代碼來保證(可以在代碼中檢查接口是否存在,hasattr(gun,'fire'))
相關(guān)文章
python文件編譯為pyc后運(yùn)行的實(shí)現(xiàn)步驟
本文主要介紹了python文件編譯為pyc后運(yùn)行的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python編程中非常重要卻又被嚴(yán)重低估的庫decorator
今天介紹的是一個已經(jīng)存在十年,但是依舊不紅的庫 decorator,好像很少有人知道他的存在一樣。本篇文章不會過多的向你介紹裝飾器的基本知識,我會默認(rèn)你知道什么是裝飾器,并且懂得如何寫一個簡單的裝飾器2021-10-10
Python使用socketServer包搭建簡易服務(wù)器過程詳解
這篇文章主要介紹了Python使用socketServer包搭建簡易服務(wù)器過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Python常見MongoDB數(shù)據(jù)庫操作實(shí)例總結(jié)
這篇文章主要介紹了Python常見MongoDB數(shù)據(jù)庫操作,結(jié)合實(shí)例形式詳細(xì)總結(jié)了Python針對MongoDB數(shù)據(jù)庫相關(guān)pymongo庫安裝以及MongoDB數(shù)據(jù)庫的增刪改查等相關(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

