python多态_多态是什么?为什么要使用多态?
生活随笔
收集整理的這篇文章主要介紹了
python多态_多态是什么?为什么要使用多态?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多態
所謂多態:定義時的類型和運行時的類型不一樣,此時就成為多態 ,多態的概念是應用于Java和C#這一類強類型語言中,而Python崇尚“鴨子類型”。
鴨子類型:雖然我想要一只"鴨子",但是你給了我一只鳥。 但是只要這只鳥走路像鴨子,叫起來像鴨子,游泳也像鴨子,我就認為這是鴨子。
Python的多態,就是弱化類型,重點在于對象參數是否有指定的屬性和方法,如果有就認定合適,而不關心對象的類型是否正確。
· Python偽代碼實現Java或C#的多態
class?F1(object):????def?show(self):????????print('F1.show')class?S1(F1):????def?show(self):????????print('S1.show')class?S2(F1):????def?show(self):????????print('S2.show')# 由于在Java或C#中定義函數參數時,必須指定參數的類型# 為了讓Func函數既可以執行S1對象的show方法,又可以執行S2對象的show方法,# 所以在def Func的形參中obj的類型是 S1和S2的父類即F1# # 而實際傳入的參數是:S1對象和S2對象def?Func(F1 obj):?????"""Func函數需要接收一個F1類型或者F1子類的類型"""?????print(obj.show())?s1_obj = S1()Func(s1_obj) # 在Func函數中傳入S1類的對象 s1_obj,執行 S1 的show方法,結果:S1.show?s2_obj = S2()Func(s2_obj) # 在Func函數中傳入Ss類的對象 ss_obj,執行 Ss 的show方法,結果:S2.show通俗點理解:定義obj這個變量是說的類型是:F1的類型,但是在真正調用Func函數時給其傳遞的不一定是F1類的實例對象,有可能是其子類的實例對象, 這種情況就是所謂的多態。
· Python “鴨子類型”
class?F1(object):????def?show(self):????????print('F1.show')class?S1(F1):????def?show(self):????????print('S1.show')class?S2(F1):????def?show(self):????????print('S2.show')def?Func(obj):??????# python是弱類型,即無論傳遞過來的是什么,obj變量都能夠指向它,這也就沒有所謂的多態了(弱化了這個概念)????print(obj.show())?s1_obj = S1()Func(s1_obj)?s2_obj = S2()Func(s2_obj)更多資料私信領取~、
總結
以上是生活随笔為你收集整理的python多态_多态是什么?为什么要使用多态?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 二分查找_二分查找算法总结
- 下一篇: python输入一个英文句子、翻转句子中