日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:Python多態(tài)原理及實(shí)現(xiàn)

對(duì)于弱類(lèi)型的語(yǔ)言來(lái)說(shuō),變量并沒(méi)有聲明類(lèi)型,因此同一個(gè)變量完全可以在不同的時(shí)間引用不同的對(duì)象。當(dāng)同一個(gè)變量在調(diào)用同一個(gè)方法時(shí),完全可能呈現(xiàn)出多種行為(具體呈現(xiàn)出哪種行為由該變量所引用的對(duì)象來(lái)決定),這就是所謂的多態(tài)(Polymorphism)。

創(chuàng)新互聯(lián)專(zhuān)注于蘆淞網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供蘆淞營(yíng)銷(xiāo)型網(wǎng)站建設(shè),蘆淞網(wǎng)站制作、蘆淞網(wǎng)頁(yè)設(shè)計(jì)、蘆淞網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造蘆淞網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供蘆淞網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

先看下面程序:

class Bird:
    def move(self, field):
        print('鳥(niǎo)在%s上自由地飛翔' % field)
class Dog:
    def move(self, field):
        print('狗在%s里飛快的奔跑' % field)
# x變量被賦值為Bird對(duì)象
x = Bird()
# 調(diào)用x變量的move()方法
x.move('天空')
# x變量被賦值為Dog對(duì)象
x = Dog()
# 調(diào)用x變量的move()方法
x.move('草地')

上面程序中 x 變量開(kāi)始被賦值為 Bird 對(duì)象,因此當(dāng) x 變量執(zhí)行 move() 方法時(shí),它會(huì)表現(xiàn)出鳥(niǎo)類(lèi)的飛翔行為。接下來(lái) x 變量被賦值為 Dog 對(duì)象,因此當(dāng) x 變量執(zhí)行 move() 方法時(shí),它會(huì)表現(xiàn)出狗的奔跑行為。

運(yùn)行上面程序,可以看到如下運(yùn)行結(jié)果:

鳥(niǎo)在天空上自由地飛翔
狗在草地里飛快的奔跑

從上面的運(yùn)行結(jié)果可以看出,同一個(gè)變量 x 在執(zhí)行同一個(gè) move() 方法時(shí),由于 x 指向的對(duì)象不同,因此它呈現(xiàn)出不同的行為特征,這就是多態(tài)。

看到這里,可能有讀者感到失望,這個(gè)多態(tài)有什么用?。坎痪褪莿?chuàng)建對(duì)象、調(diào)用方法嗎?看不出多態(tài)有什么優(yōu)勢(shì)???

實(shí)際上,多態(tài)是一種非常靈活的編程機(jī)制。假如我們要定義一個(gè) Canvas(畫(huà)布)類(lèi),這個(gè)畫(huà)布類(lèi)定義一個(gè) draw_pic() 方法,該方法負(fù)責(zé)繪制各種圖形。該 Canvas類(lèi)的代碼如下:

class Canvas:
    def draw_pic(self, shape):
        print('--開(kāi)始繪圖--')
        shape.draw(self)

從上面代碼可以看出,Canvas 的 draw_pic() 方法需要傳入一個(gè) shape 參數(shù),該方法就是調(diào)用 shape 參數(shù)的 draw() 方法將自己繪制到畫(huà)布上。

從上面程序來(lái)看,Canvas 的 draw_pic() 傳入的參數(shù)對(duì)象只要帶一個(gè) draw() 方法就行,至于該方法具有何種行為(到底執(zhí)行怎樣的繪制行為),這與 draw_pic() 方法是完全分離的,這就為編程增加了很大的靈活性。下面程序定義了三個(gè)圖形類(lèi),并為它們都提供了 draw() 方法,這樣它們就能以不同的行為繪制在畫(huà)布上,這就是多態(tài)的實(shí)際應(yīng)用??慈缦率纠绦颍?/p>

class Canvas:
    def draw_pic(self, shape):
        print('--開(kāi)始繪圖--')
        shape.draw(self)

class Rectangle:
    def draw(self, canvas):
        print('在%s上繪制矩形' % canvas)
class Triangle:
    def draw(self, canvas):
        print('在%s上繪制三角形' % canvas)
class Circle:
    def draw(self, canvas):
        print('在%s上繪制圓形' % canvas)
c = Canvas()
# 傳入Rectangle參數(shù),繪制矩形
c.draw_pic(Rectangle())
# 傳入Triangle參數(shù),繪制三角形
c.draw_pic(Triangle())
# 傳入Circle參數(shù),繪制圓形
c.draw_pic(Circle())

運(yùn)行上面代碼, 可以看到如下輸出結(jié)果:

--開(kāi)始繪圖--
在<__main__.Canvas object at 0x0000021CA36364A8>上繪制矩形
--開(kāi)始繪圖--
在<__main__.Canvas object at 0x0000021CA36364A8>上繪制三角形
--開(kāi)始繪圖--
在<__main__.Canvas object at 0x0000021CA36364A8>上繪制圓形

從上面這個(gè)例子可以體會(huì)到 Python 多態(tài)的優(yōu)勢(shì)。當(dāng)程序涉及 Canvas 類(lèi)的 draw_pic() 方法時(shí),該方法所需的參數(shù)是非常靈活的,程序?yàn)樵摲椒▊魅氲膮?shù)對(duì)象只要具有指定方法就行,至于該方法呈現(xiàn)怎樣的行為特征,則完全取決于對(duì)象本身,這大大提高了 draw_pic() 方法的靈活性。


文章標(biāo)題:創(chuàng)新互聯(lián)Python教程:Python多態(tài)原理及實(shí)現(xiàn)
本文鏈接:http://m.5511xx.com/article/dheodhp.html