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

首頁 > 編程 > Python > 正文

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

2020-01-04 17:19:48
字體:
供稿:網(wǎng)友

一、 什么是多態(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):  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)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 齐齐哈尔市| 锡林浩特市| 瑞安市| 武清区| 平阴县| 龙江县| 永平县| 赤城县| 来宾市| 庆安县| 睢宁县| 资溪县| 岑溪市| 旅游| 朝阳市| 郁南县| 喜德县| 栾川县| 抚顺县| 乌兰浩特市| 长汀县| 红河县| 顺平县| 绿春县| 嘉定区| 肇庆市| 和平区| 榆中县| 黑水县| 五峰| 合阳县| 黎平县| 饶阳县| 英超| 比如县| 六盘水市| 双桥区| 鄢陵县| 宣化县| 杭锦旗| 苍南县|