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

首頁 > 編程 > Python > 正文

老生常談python之鴨子類和多態

2019-11-25 16:06:04
字體:
來源:轉載
供稿:網友

一、 什么是多態

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

二、 python中的多態

<1>通過繼承實現多態(子類可以作為父類來使用)<2>子類通過重載父類的方法實現多態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....

三、 動態語言和鴨子類型

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

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

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

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

<5>不用實現接口

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())

四、 多態的好處

<1>可實現開放的擴展和修改的封閉

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德昌县| 镇坪县| 布拖县| 错那县| 建阳市| 榆社县| 九寨沟县| 丽江市| 徐水县| 天峻县| 诸城市| 蒙山县| 宁安市| 稻城县| 宿迁市| 阳新县| 漳平市| 波密县| 屯留县| 金门县| 油尖旺区| 宜兰县| 绵阳市| 雷波县| 获嘉县| 宁德市| 怀来县| 哈巴河县| 岚皋县| 广平县| 崇阳县| 乡城县| 伊宁市| 安丘市| 乐业县| 抚远县| 满洲里市| 句容市| 扎兰屯市| 辰溪县| 富裕县|