新聞中心
我們都知道,Python 是弱類型語言,其最明顯的特征是在使用變量時,無需為其指定具體的數(shù)據(jù)類型。這會導致一種情況,即同一變量

創(chuàng)新互聯(lián)建站服務(wù)項目包括臺江網(wǎng)站建設(shè)、臺江網(wǎng)站制作、臺江網(wǎng)頁制作以及臺江網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,臺江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到臺江省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
可能會被先后賦值不同的類對象,例如:
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() 方法。
當前標題:創(chuàng)新互聯(lián)Python教程:一文帶你了解python中的多態(tài)
本文來源:http://m.fisionsoft.com.cn/article/ccosiss.html


咨詢
建站咨詢
