成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

什么是Python多態(tài)-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)公司自2013年起,公司以網(wǎng)站制作、做網(wǎng)站、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶超過千家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)什么是Python多態(tài),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

先看下面程序:

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

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

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

鳥在天空上自由地飛翔
狗在草地里飛快的奔跑

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

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

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

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

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

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

class Canvas:
    def draw_pic(self, shape):
        print('--開始繪圖--')
        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())

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

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

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

上述就是小編為大家分享的什么是Python多態(tài)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

本文標(biāo)題:什么是Python多態(tài)-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article22/dpcjjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、域名注冊、網(wǎng)站營銷、云服務(wù)器、動態(tài)網(wǎng)站服務(wù)器托管

廣告

聲明:本網(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)

手機(jī)網(wǎng)站建設(shè)
磴口县| 麻江县| 邹平县| 石渠县| 丘北县| 定边县| 墨脱县| 托克逊县| 晴隆县| 漯河市| 平原县| 漳浦县| 宁安市| 河南省| 互助| 高雄市| 盐边县| 资溪县| 宜兰县| 蒙城县| 天峨县| 葵青区| 安阳市| 察隅县| 岢岚县| 海安县| 永顺县| 西充县| 马关县| 来凤县| 常德市| 南丰县| 全椒县| 宁远县| 眉山市| 全南县| 上栗县| 彰武县| 彩票| 昌黎县| 深泽县|