亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中什么是類的多態

發布時間:2020-09-23 14:14:07 來源:億速云 閱讀:191 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關python中什么是類的多態,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

多態首先是建立在繼承的基礎上的,先有繼承才能有多態。多態是指不同的子類在繼承父類后分別都重寫覆蓋了父類的方法,即父類同一個方法,在繼承的子類中表現出不同的形式。多態成立的另一個條件是在創建子類時候必須使用父類new子類的方式。

Fu f1 = new Zi1();
Fu f2 = new Zi2();
f1.c();
f2.c();

子類Zi1,Zi2繼承了父類Fu,并且重寫了父類的方法c()

然后通過f1,和f2去調用子類重寫父類后的這個方法。即還有一個成立條件是子類必須重寫父類的方法。

面向對象的三個基本特征是:封裝、繼承、多態。

比如,你和你朋友同時繼承了人這個類中打人的方法,但是你用拳頭打人和你朋友用巴掌打人的方法都是打人方法,卻表現出不同的形式,這就是現實生活中多態的理解。

關于多態,有一個被稱作“鴨子類型”(duck typeing)的東西,其含義在維基百科中被表述為:

在程序設計中,鴨子類型(英語:duck typing)是動態類型的一種風格。在這種風格中,一個對象有效的語義,不是由繼承自特定的類或實現特定的接口,而是由當前方法和屬性的集合決定。這個概念的名字來源于由 James Whitcomb Riley 提出的鴨子測試(見下面的“歷史”章節),“鴨子測試”可以這樣表述:“當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。”

在 python 中多態的經典使用可以用兩句話來總結對擴展開放和對修改封閉,即著名的「開閉」原則。對擴展開放即可以隨意的增加父類的子類;對修改封閉即對于依賴父類的函數,新增子類對該函數無任何影響無需做任何修改。

我們可以通過以下代碼來加深理解:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def print_age(self):
        print("%s's age is %s" % (self.name, self.age))
class Man(Person):
    def print_age(self):
        print("Mr. %s's age is %s" %(self.name, self.age))
class Woman(Person):
    def print_age(self):
        print("Ms. %s's age is %s" %(self.name, self.age))
        
def person_age(person):
    person.print_age()
person = Person("kevin", 23)
man = Man("Bob", 33)
woman = Woman("Lily", 28)
person_age(person)
person_age(man)
person_age(woman)

以上代碼執行結果如下:

kevin's age is 23
Mr. Bob's age is 33
Ms. Lily's age is 28

在以上代碼中函數 person_age 函數的輸入參數為類 Person 的實例,但是在實際執行過程中 Person 的子類 Man 和 Woman 的示例同樣可以在 person_age 函數中正常運行,這既是類的多態的作用。實際上任何實現了函數 print_age 函數的類均可作為 person_age 函數的參數且能夠正常工作,這既是前面提到的「鴨子類型」。

上述就是小編為大家分享的python中什么是類的多態了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

两当县| 大悟县| 浦江县| 衡山县| 瑞安市| 饶阳县| 赫章县| 中牟县| 奈曼旗| 长沙市| 芮城县| 铜鼓县| 西城区| 和林格尔县| 伊吾县| 白山市| 南昌市| 汝阳县| 黄山市| 胶南市| 安远县| 平顺县| 乌鲁木齐市| 高青县| 盖州市| 留坝县| 兴山县| 西丰县| 百色市| 会昌县| 大竹县| 南平市| 紫阳县| 太湖县| 方城县| 依安县| 西昌市| 浑源县| 莱西市| 汶上县| 从化市|