亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

老生常談python之鴨子類和多態(tài)

 更新時間:2017年06月13日 08:30:42   投稿:jingxian  
下面小編就為大家?guī)硪黄仙U刾ython之鴨子類和多態(tài)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、 什么是多態(tài)

<1>一種類型具有多種類型的能力
<2>允許不同的對象對同一消息做出靈活的反應
<3>以一種通用的方式對待個使用的對象
<4>非動態(tài)語言必須通過繼承和接口的方式來實現(xiàn)

二、 python中的多態(tài)

<1>通過繼承實現(xiàn)多態(tài)(子類可以作為父類來使用)
<2>子類通過重載父類的方法實現(xiàn)多態(tài)

class Animal:
  def move(self):
    print('animal is moving....')
class Dog(Animal):
  pass
def move(obj):
  obj.move()

>>>move(Animal())
>>>animal is moving....
>>>move(Dog())
>>>animal is moving....

class Fish(Animal):
  def move(self):
    print('fish is moving....')
>>>move(Fish())
>>>fish is moving....

三、 動態(tài)語言和鴨子類型

<1>變量綁定的類型是不確定的

<2>函數(shù)和方法可以接收任何類型的參數(shù)

<3>調用方法時不檢查提供的參數(shù)類型

<4>調用是否成功有參數(shù)的方法和屬性確定,調用不成功則拋出錯誤

<5>不用實現(xiàn)接口

class P:
  def __init__(self, x, y):
    self.x = x
    self.y = y
  def __add__(self, oth):
    return P(self.x+oth.x, self.y+oth.y)
  def info(self):
    print(self.x, self.y)
class D(P):
  def __init__(self, x, y, z):
    super.__init__(x, y)
    self.z = z

  def __add__(self, oth):
    return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
  def info(self):
    print(self.x, self.y, self.z)

class F:
  def __init__(self, x, y, z):
    self.x = x
    self.y = y
    self.z = z

  def __add__(self, oth):
    return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
  
  def info(self):
    print(self.x, self.y, self.z)
  

def add(a, b):
  return a + b

if __name__ == '__main__':
  add(p(1, 2), p(3, 4).info())
  add(D(1, 2, 3), D(1, 2, 3).info())
  add(F(2, 3, 4), D(2, 3, 4).info())

四、 多態(tài)的好處

<1>可實現(xiàn)開放的擴展和修改的封閉

<2>使python程序更加的靈活

以上這篇老生常談python之鴨子類和多態(tài)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Flask登錄注冊項目的簡單實現(xiàn)

    Flask登錄注冊項目的簡單實現(xiàn)

    一個簡單的用戶注冊和登錄的頁面,涉及到驗證,數(shù)據(jù)庫存儲等等,本文主要介紹了Flask登錄注冊項目的簡單實現(xiàn),從目錄結構開始,感興趣的可以了解一下
    2021-05-05
  • Python如何對文件進行重命名

    Python如何對文件進行重命名

    這篇文章主要介紹了Python如何對文件進行重命名,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Python簡易版停車管理系統(tǒng)

    Python簡易版停車管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Python如何實現(xiàn)簡易版停車管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python asyncio的基本使用示例教程

    Python asyncio的基本使用示例教程

    Task主要作用是幫助event_loop調度,如果Task發(fā)現(xiàn)它打包的協(xié)程在await一個對象(執(zhí)行一個io操作),則Task會掛起該協(xié)程的執(zhí)行,把控制權交回event_loop,讓他去運行其他Task,當該對象運行完畢,Task將打包的協(xié)程恢復運行,本文介紹Python asyncio使用小結,感興趣的朋友一起看看吧
    2024-02-02
  • Python Django ORM與模型詳解

    Python Django ORM與模型詳解

    這篇文章主要介紹了django的ORM與模型的實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧v
    2021-11-11
  • 使用OpenCV實現(xiàn)迷宮解密的全過程

    使用OpenCV實現(xiàn)迷宮解密的全過程

    同學發(fā)了我張迷宮圖片,讓我走迷宮來緩解暴躁,于是乎就碼了一個程序出來,下面這篇文章主要給大家介紹了關于使用OpenCV實現(xiàn)迷宮解密的相關資料,需要的朋友可以參考下
    2022-10-10
  • python 實現(xiàn)音頻疊加的示例

    python 實現(xiàn)音頻疊加的示例

    這篇文章主要介紹了python 實現(xiàn)音頻疊加的示例,幫助大家更好的理解和使用python處理聲音文件,感興趣的朋友可以了解下
    2020-10-10
  • Python自然語言處理之切分算法詳解

    Python自然語言處理之切分算法詳解

    這篇文章主要介紹了Python自然語言處理之切分算法詳解,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python IndexError報錯分析及解決方法

    Python IndexError報錯分析及解決方法

    在Python編程中,IndexError是一種常見的異常類型,它通常發(fā)生在嘗試訪問序列(如列表、元組或字符串)中不存在的索引時,本文將深入分析IndexError的成因、表現(xiàn)形式,并提供相應的解決辦法,同時附帶詳細的代碼示例,需要的朋友可以參考下
    2024-07-07
  • Numpy之如何改變數(shù)組形狀

    Numpy之如何改變數(shù)組形狀

    這篇文章主要介紹了Numpy之如何改變數(shù)組形狀問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論