方法的過載和動態性

2021-09-12 10:28:00 字數 1189 閱讀 8130

在其他語言中,可以定義多個重名的方法,只要保證方法簽名唯一即可。方法簽名包含 3個部分:方法名、引數數量、引數型別

而在python 中,方法的引數沒有宣告型別,引數的數量也可以由可變引數控制。因此,python 中是沒有方法的過載的。定義乙個方法即可有多種呼叫方式,相當於實現了其他語言中的方法的過載。

如果我們在類體中定義了多個重名的方法只有最後乙個方法有效

在程式設計中最好不要使用重名的方法!python 中方法沒有過載。

class person:

def say_hi(self):

print("hello")

def say_hi(self,name):

print(",hello".format(name))

p1 = person()

# p1.say_hi() #只有最後乙個帶引數方法有效,所以報錯,say_hi() missing 1 required positional argument: 'name'

p1.say_hi("liming")

執行結果:

liming,hello

python 是動態語言,我們可以動態的為類新增新的方法,或者動態的修改類的已有的方法。

class person:

def work(self):

print("努力上班!")

def play_game(self):

print("玩遊戲".format(self))

def work2(s):

print("好好工作,努力上班!")

person.play = play_game #為類新增方法

person.work = work2 #修改類中的方法

p = person()

p.play()

p.work()

執行結果:

<__main__.person object at 0x0000018316994f60>玩遊戲

好好工作,努力上班!

我們可以看到,person 動態的新增了 play_game 方法,以及用 work2 替換了 work 方法。

方法和方法的過載

帶參方法的語法 訪問修飾符 返回型別 方法名 形式引數列表 呼叫有參方法 類 物件名 new 類 物件名.方法名 實參1,實參2.形參實參 呼叫方法的時候,實參不能指定資料型別 形參和實參 資料型別要一致,數量也要一致 值傳遞,引用傳遞 基本資料型別傳遞的是 值,乙個變數的值改變,不會影響另乙個 引...

方法和方法過載

中括號 表示可選 許可權修飾符 特殊修飾符 返回值型別 方法名 引數列表 方法的分類 無論是什麼方法最終一定能夠被歸類到四類中。根據返回值型別和是否有引數列表劃分出來的。無參無返方法 沒有引數 空的 也沒有返回值型別void public void printinfo 無參有返方法 沒有引數 空的 ...

方法和方法過載

方法的語法 方法宣告 訪問修飾符 返回值型別 方法名 引數列表 public void 1.無參無返 沒有引數列表 沒有返回值 單純的作為 功能 的聚合使用 便於功能的復用。public void show 2.無參有返 沒有引數列表 有返回值 單純的只是想通過呼叫某個功能 得到某些結果的時候就可以...