Python入門基礎篇 No.73 —— 方法沒有過載_方法的動態性
阿新 • • 發佈:2021-01-25
技術標籤:# 基礎python程式語言windows經驗分享程式人生
Python入門基礎篇 No.73 —— 方法沒有過載_方法的動態性
文章目錄
前生篇:__del__方法(解構函式)和垃圾回收機制 __call__方法和可呼叫物件
前言
一、方法沒有過載
- 在其他語言中,可以定義多個重名的方法,只要保證方法簽名唯一即可。方法簽名包含 3個部分:方法名、引數數量、引數型別。
- Python 中,方法的的引數沒有宣告型別(呼叫時確定引數的型別),引數的數量也可以由可變引數控制。因此,Python 中是沒有方法的過載的。定義一個方法即可有多種呼叫方式,相當於實現了其他語言中的方法的過載。
- 如果我們在類體中定義了多個重名的方法,只有最後一個方法有效。
- 建議:不要使用重名的方法!Python 中方法沒有過載。
程式碼演示:
class Person:
def say_hi(self):
print("hello")
def say_hi(self, name):
print('{0},hello'.format(name))
p1 = Person()
# p1.say_hi() # 不帶引數,報錯:TypeError: say_hi() missing 1 required positional argument: 'name'
p1.say_hi('Offer')
-----------------------------
Offer,hello
二、方法的動態性
- Python 是動態語言,我們可以動態的為類新增新的方法,或者動態的修改類的已有的方法。
程式碼演示:
# 測試方法的動態性
class Person:
def work(self):
print("努力學習!")
def play_game(self):
print("{0}玩遊戲".format(self))
def work2(self):
print("天天學習!" )
Person.play = play_game
Person.work = work2
p = Person()
p.play()
p.work()
-----------------------
<__main__.Person object at 0x000002716FBDF850>玩遊戲
天天學習!
- 我們可以看到,Person 動態的新增了 play_game 方法,以及用 work2 替換了 work 方法。
總結
以上幫各位總結好了,收藏,關注即可查收。
前生篇:__del__方法(解構函式)和垃圾回收機制 __call__方法和可呼叫物件
關注下方公眾號,免費拿Python學習資料!!!