1. 程式人生 > 其它 >Python入門基礎篇 No.73 —— 方法沒有過載_方法的動態性

Python入門基礎篇 No.73 —— 方法沒有過載_方法的動態性

技術標籤:# 基礎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學習資料!!!

在這裡插入圖片描述