91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Python多態

發布時間:2020-08-26 16:02:34 來源:億速云 閱讀:149 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關什么是Python多態,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

先看下面程序:

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

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

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

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

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

看到這里,可能有讀者感到失望,這個多態有什么用啊?不就是創建對象、調用方法嗎?看不出多態有什么優勢啊?

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

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

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

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

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參數,繪制矩形
c.draw_pic(Rectangle())
# 傳入Triangle參數,繪制三角形
c.draw_pic(Triangle())
# 傳入Circle參數,繪制圓形
c.draw_pic(Circle())

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

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

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

上述就是小編為大家分享的什么是Python多態了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆安县| 芦山县| 瓦房店市| 邯郸县| 隆尧县| 翁牛特旗| 宜宾县| 龙山县| 巨野县| 邯郸县| 博兴县| 旬邑县| 西林县| 昔阳县| 白河县| 安平县| 兴仁县| 洪泽县| 新兴县| 丹巴县| 弥勒县| 宁城县| 六安市| 南开区| 额敏县| 高雄市| 南木林县| 丹棱县| 宜州市| 桐梓县| 安宁市| 革吉县| 云安县| 蓝山县| 武隆县| 讷河市| 安多县| 泰州市| 阿图什市| 建德市| 金塔县|