国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 01:42:21
字體:
供稿:網(wǎng)友

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

<1>一種類型具有多種類型的能力
<2>允許不同的對象對同一消息做出靈活的反應(yīng)
<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):  passdef 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>調(diào)用方法時不檢查提供的參數(shù)類型

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

<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 + bif __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)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 榆林市| 嘉善县| 海城市| 青川县| 翁源县| 乐清市| 灵寿县| 秭归县| 达孜县| 察雅县| 博湖县| 余江县| 玉环县| 西充县| 长寿区| 府谷县| 江陵县| 丰宁| 奉节县| 屏南县| 吉隆县| 宁河县| 桃源县| 博野县| 武陟县| 潼关县| 门源| 海盐县| 石景山区| 金山区| 杭锦后旗| 沂源县| 望奎县| 达尔| 类乌齐县| 正镶白旗| 灌南县| 安顺市| 尖扎县| 定南县| 滨海县|