小編給大家分享一下python中多態(tài)指的是什么,相信大部分人都還不怎么了解,因此分享這邊文章給大家學習,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學習方法吧!
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供樂昌網(wǎng)站建設(shè)、樂昌做網(wǎng)站、樂昌網(wǎng)站設(shè)計、樂昌網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、樂昌企業(yè)網(wǎng)站模板建站服務,10年樂昌做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
我們都知道,Python 是弱類型語言,其最明顯的特征是在使用變量時,無需為其指定具體的數(shù)據(jù)類型。這會導致一種情況,即同一變量
可能會被先后賦值不同的類對象,例如:
class CLanguage: def say(self): print("賦值的是 CLanguage 類的實例對象") class CPython: def say(self): print("賦值的是 CPython 類的實例對象") a = CLanguage() a.say() a = CPython() a.say()
運行結(jié)果為:
賦值的是 CLanguage 類的實例對象 賦值的是 CPython 類的實例對象
可以看到,a 可以被先后賦值為 CLanguage 類和 CPython 類的對象,但這并不是多態(tài)。類的多態(tài)特性,還要滿足以下 2 個前提條件:繼承:多態(tài)一定是發(fā)生在子類和父類之間;重寫:子類重寫了父類的方法。
下面程序是對上面代碼的改寫:
class CLanguage: def say(self): print("調(diào)用的是 Clanguage 類的say方法") class CPython(CLanguage): def say(self): print("調(diào)用的是 CPython 類的say方法") class CLinux(CLanguage): def say(self): print("調(diào)用的是 CLinux 類的say方法") a = CLanguage() a.say() a = CPython() a.say() a = CLinux() a.say()
執(zhí)行結(jié)果
調(diào)用的是 Clanguage 類的say方法 調(diào)用的是 CPython 類的say方法 調(diào)用的是 CLinux 類的say方法
可以看到,CPython 和 CLinux 都繼承自 CLanguage 類,且各自都重寫了父類的 say() 方法。從運行結(jié)果可以看出,同一變量 a 在執(zhí)行同一個 say() 方法時,由于 a 實際表示不同的類實例對象,因此 a.say() 調(diào)用的并不是同一個類中的 say() 方法,這就是多態(tài)。
但是,僅僅學到這里,讀者還無法領(lǐng)略 Python 類使用多態(tài)特性的精髓。其實,Python 在多態(tài)的基礎(chǔ)上,衍生出了一種更靈活的編程機制。
繼續(xù)對上面的程序進行改寫:
class WhoSay: def say(self,who): who.say() class CLanguage: def say(self): print("調(diào)用的是 Clanguage 類的say方法") class CPython(CLanguage): def say(self): print("調(diào)用的是 CPython 類的say方法") class CLinux(CLanguage): def say(self): print("調(diào)用的是 CLinux 類的say方法") a = WhoSay() #調(diào)用 CLanguage 類的 say() 方法 a.say(CLanguage()) #調(diào)用 CPython 類的 say() 方法 a.say(CPython()) #調(diào)用 CLinux 類的 say() 方法 a.say(CLinux())
程序執(zhí)行結(jié)果為:
調(diào)用的是 Clanguage 類的say方法 調(diào)用的是 CPython 類的say方法 調(diào)用的是 CLinux 類的say方法
此程序中,通過給 WhoSay 類中的 say() 函數(shù)添加一個 who 參數(shù),其內(nèi)部利用傳入的 who 調(diào)用 say() 方法。這意味著,當調(diào)用
WhoSay 類中的 say() 方法時,我們傳給 who 參數(shù)的是哪個類的實例對象,它就會調(diào)用那個類中的 say() 方法。
以上是python中多態(tài)指的是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!