欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年06月13日 08:30:42   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇老生常談python之鴨子類和多態(tài)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

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

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

<1>通過(guò)繼承實(shí)現(xiàn)多態(tài)(子類可以作為父類來(lái)使用)
<2>子類通過(guò)重載父類的方法實(shí)現(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....

三、 動(dòng)態(tài)語(yǔ)言和鴨子類型

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

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

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

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

<5>不用實(shí)現(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>可實(shí)現(xiàn)開(kāi)放的擴(kuò)展和修改的封閉

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

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

相關(guān)文章

  • Flask登錄注冊(cè)項(xiàng)目的簡(jiǎn)單實(shí)現(xiàn)

    Flask登錄注冊(cè)項(xiàng)目的簡(jiǎn)單實(shí)現(xiàn)

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

    Python如何對(duì)文件進(jìn)行重命名

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

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

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

    Python asyncio的基本使用示例教程

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

    Python Django ORM與模型詳解

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

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

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

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

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

    Python自然語(yǔ)言處理之切分算法詳解

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

    Python IndexError報(bào)錯(cuò)分析及解決方法

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

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

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

最新評(píng)論