日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

关于python中多态的理解。

發布時間:2025/3/20 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于python中多态的理解。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習到多態的時候,不確定自己是否完全理解了python的多態,于是Google觀看了眾多資料和文獻,發現很多編程大佬講得過于抽象,不便于新手理解,這違背了python的初衷:簡單。

所以我在此用通俗一點的方式作了一個總結。

先貼一段代碼,在python3中舉例:

(為了給非科班出身以及中學英語偏科的python學習者更友好的閱讀體驗,w3n特意添加了中文注釋,可以不細看代碼,通過注釋閱讀,主要目的是邏輯理解,代碼次要)

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' class Human(object): # 創建“人”類def __init__(self):print('I can speak') # 我會講話 class Man(Human): # 創建“男人”類def __init__(self):print('I have to prepare money for woman in usually in China') # 在中國,通常男人必須為娶妻、處對象而準備禮金和不少的錢 class Woman(Human):創建“女人”類def __init__(self):print('I do not need the money from the man if he love me. aha, you are so cute that you believe it') # 如果男人愛我,我不會在意他有沒有為我花錢。啊哈?你信了那只能說明你太天真了。 print('human:') h = Human() print('man:') m = Man() print('woman:') w = Woman() # 分別對 人類、男人類、女人類創建一個變量h、m、w print(isinstance(h,Human)) print(isinstance(m,Man)) print(isinstance(m,Human)) # look at this, it's true, m is not only man but also human 分別判斷h是人類嗎、m是男人類嗎、m是人類嗎,輸出結果全部為是。 #輸出結果是: #human: #I can speak #man: #I have to prepare money for woman in usually in China #woman: #I do not need the money from the man if he love me. aha, you are so cute that you believe it #True #True #True

這個例子中m(變量,類似 “x =3 ”的x)不僅是 Man(對比int)類別,也是Human(object)類別,這就是變量的多態;另外當m調用__init__方法時輸出的內容和Human的__init__是不一樣的,這就是多態之函數的多態。

另外為了python的學習者能夠更好的學習python,opw3n特意在此告知,python的多態在國內的參考文獻中還存在不同的爭議,即便你不理解python的多臺也沒關系,并不影響你繼續學習python,可以暫且跳過“python的多態”。

關于面向對象的多態理解,建議參考鴨子類型。

為了方便閱讀,從維基百科引入如下內容:

鴨子類型:

參考鴨子類型,鴨子類型(英語:duck typing)是動態類型的一種風格。在這種風格中,一個對象有效的語義,不是由繼承自特定的類或實現特定的接口,而是由"當前方法和屬性的集合"決定。

這個概念的名字來源于由James Whitcomb Riley提出的鴨子測試,“鴨子測試”可以這樣表述:
“當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。”

在鴨子類型中,關注的不是對象的類型本身,而是它是如何使用的。例如,在不使用鴨子類型的語言中,我們可以編寫一個函數,它接受一個類型為"鴨子"的對象,并調用它的"走"和"叫"方法。在使用鴨子類型的語言中,這樣的一個函數可以接受一個任意類型的對象,并調用它的"走"和"叫"方法。

如果這些需要被調用的方法不存在,那么將引發一個運行時錯誤。任何擁有這樣的正確的"走"和"叫"方法的對象都可被函數接受的這種行為引出了以上表述,這種決定類型的方式因此得名。

鴨子類型通常得益于"不"測試方法和函數中參數的類型,而是依賴文檔、清晰的代碼和測試來確保正確使用。
如有錯誤,請不吝賜教。

總結

以上是生活随笔為你收集整理的关于python中多态的理解。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。