首頁 >後端開發 >Python教學 >python中多態的實例解析(詳細)

python中多態的實例解析(詳細)

不言
不言原創
2018-09-20 16:01:403785瀏覽

這篇文章帶給大家的內容是關於python中多態的實例解析(詳細),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

class Human(object):  # 父类 :创建“人”类

    def __init__(self):

           print('Ill pound the code and buy you a bag')  # 我会敲打码,给你买包包

class Man(Human):  # 1)子类1 创建“男人”类

    def __init__(self):

           print('In hs, we should have the knowledge to drink wine.The President up, the kitchen down')  # 在衡水,要文武双全,有知识,会喝酒;上的总裁,下的厨房

class Woman(Human):# 2)子类2 创建“女人”类

    def __init__(self):

           print('If a man loves me, I dont care if he has a house or a car.Woman?Do you believe a')  # 如果男人爱我,我不会在意他有没有房子车子。呵呵女人啊?你信了那只能说明你太天真了。

print('human:')

h = Human()

print('man:')

m = Man()

print('woman:')

w = Woman()  # 分别对 人类、男人类、女人类创建一个变量h、m、w

print(isinstance(h,Human))#isinstance举例

print(isinstance(m,Man))

print(isinstance(m,Human))  #  分别判断h是人类吗、m是男人类吗、m是人类吗,输出结果全部为是。

#输出结果是:
# human:
# Ill pound the code and buy you a bag
# man:
# In hs, we should have the knowledge to drink wine.The President up, the kitchen down
# woman:
# If a man loves me, I dont care if he has a house or a     
     car.Woman?Do you believe a
# True
# True
# True

這就是變數的多態;另外當m呼叫__init__方法時輸出的內容和Human的__init__是不一樣的,這就是多態之函數的多態。

鴨子類型:

參考鴨子類型,鴨子類型(英文:duck typing)是動態類型的風格。在這種風格中,一個物件有效的語義,不是由繼承自特定的類別或實作特定的接口,而是由"當前方法和屬性的集合"決定。這個概念的名字來自James Whitcomb Riley提出的鴨子測試,「鴨子測試」可以這樣表述:

「當看到一隻鳥走過來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就可以被稱為鴨子。」

在鴨子類型中,關注的不是物件的類型本身,而是它是如何使用的。例如,在不使用鴨子類型的語言中,我們可以寫一個函數,它接受一個類型為"鴨子"的對象,並呼叫它的"走"和"叫"方法。在使用鴨子類型的語言中,這樣的函數可以接受一個任意類型的對象,並呼叫它的"走"和"叫"方法。如果這些需要被呼叫的方法不存在,那麼將會引發一個運行時錯誤。任何擁有這樣的正確的"走"和"叫"方法的對像都可被函數接受的這種行為引出了以上表述,這種決定類型的方式因此得名。

鴨子類型通常得益於"不"測試方法和函數中參數的類型,而是依賴文件、清晰的程式碼和測試來確保正確使用。

綜上:鴨子類型,就是使用了貌似不屬於自己的方法(其他函數的方法),自己這個 函數,實例化後會改變本質

以上是python中多態的實例解析(詳細)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn