python 因為變量在賦值的時候才確定類型的,所以這用抽象類這個東西也行的,你在實現(xiàn)多態(tài)的時候cacth一下exctption就行了
創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為千山企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計,千山網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
times函數(shù)為例談?wù)劧鄳B(tài),就像我們看到的那樣,times函數(shù)中表達式×*y的意義完全取決于x和y的對象類型,同樣的函數(shù),在一個實例下執(zhí)行的是乘法,在另一個實例下執(zhí)行的卻是重復(fù)。Python把對某一對象在某種語法下的合理性交給那個對象自身來判斷。實際上,*作為一個分派機制,將執(zhí)行的控制權(quán)移交給被處理的對象。
這種依賴類型的行為稱為多態(tài),其含義就是一個操作的意義取決于被操作對象的類型。因為Python是動態(tài)類型語言,所以多態(tài)在Python中隨處可見。事實上,在 Python中所有操作都是多態(tài)的操作:print、index、*運算符,以及更多。這實際上是有意而為的,并且從很大程度上算作是這門語言簡潔性和靈活性的一個表現(xiàn)。例如,函數(shù)可以自動地應(yīng)用到所有類別的對象上。只要對象支持所預(yù)期的接口(也稱為協(xié)議),函數(shù)就能處理它們。也就是說,如果傳給函數(shù)的對象支持預(yù)期的方法和表達式運算符,那么它們對函數(shù)的邏輯來說就是有著即插即用的兼容性。
即使是簡單的times 函數(shù),對任意兩個支持*的對象都可以執(zhí)行,無論它是哪種類型,也不管它是何時編寫的。這個函數(shù)對于數(shù)字來說是有效的(執(zhí)行乘法),或者一個字符串和一個數(shù)字(執(zhí)行重復(fù)),或者任意其他支持擴展接口的兼容對象——甚至是我們尚未編寫過的基于類的對象。
在Python中,一個對象可以同時是數(shù)值對象、序列對象、關(guān)聯(lián)對象,關(guān)鍵看它支持哪些操作,也就是定義了哪些非NULL的函數(shù)指針。
因此,Python對象的多態(tài)性是基于行為的,而不像C++/Java等語言中多態(tài)性是基于類型的。Python對象實際上是全類型的,可以有的函數(shù)指針全部都有,只不過很多函數(shù)指針都是NULL,只要你實現(xiàn)了該函數(shù),python對象就能表現(xiàn)出該行為。
本文名稱:python函數(shù)多態(tài)性 python中多態(tài)的定義
轉(zhuǎn)載源于:http://chinadenli.net/article22/hgdgcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、營銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、定制開發(fā)、微信公眾號、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)