這篇文章帶給大家的內容是關於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中文網其他相關文章!