(一)Python入門-6面向對象編程:05方法沒有重載-方法的動態性
阿新 • • 發佈:2019-05-12
說明 miss 報錯 建議 pytho 動態性 控制 {0} 可變參數 好好工作,努力上班
一:方法沒有重載
在其他語言中,可以定義多個重名的方法,只要保證方法簽名唯一即可。方法簽名包含 3 個部分:方法名、參數數量、參數類型。
Python中,方法的的參數沒有聲明類型(調用時確定參數的類型),參數的數量也可以由 可變參數控制。因此,Python中是沒有方法的重載的。定義一個方法即可有多種調用方式, 相當於實現了其他語言中的方法的重載。
如果我們在類體中定義了多個重名的方法,只有最後一個方法有效。
建議:不要使用重名的方法!Python中方法沒有重載。
【操作】
#Python中沒有方法的重載,定義多個重名方法,只有最後一個有效 class Person:def say_hi(self): print(‘hello‘) def say_hi(self,name): print(‘{0}‘.format(name),‘hello‘) p = Person() #p.say_hi() #不帶參報錯,TypeError: say_hi() missing 1 required positional argument: ‘name‘ p.say_hi(‘jack‘)
二:方法的動態性
Python是動態語言,我們可以動態的為類添加新的方法,或者動態的修改類的已有的方法。
#測試方法的動態性class Person: def work(self): print(‘好好工作‘) def play_game(s): print(‘{0}玩遊戲‘.format(s)) def work2(s): print(‘好好工作,努力上班‘) Person.play = play_game p = Person() p.work() Person.work = work2 p.play() p.work()
運行結果:
好好工作
<__main__.Person object at 0x000001E7AC5F8400>玩遊戲
說明:我們可以看到,Person動態的新增了 play_game 方法,以及用work2 替換了 work 方法。
(一)Python入門-6面向對象編程:05方法沒有重載-方法的動態性