猴子修補
在這種情況下,猴子修補意味著在定義之後向類中新增新的變數或方法。例如,假設我們將類 A
定義為
class A(object):
def __init__(self, num):
self.num = num
def __add__(self, other):
return A(self.num + other.num)
但是現在我們想在程式碼中新增另一個函式。假設此功能如下。
def get_num(self):
return self.num
但是我們如何在 A
中新增這個方法呢?這很簡單,我們只是通過賦值語句將該函式放入 A
中。
A.get_num = get_num
為什麼這樣做?因為函式就像任何其他物件一樣是物件,而方法是屬於該類的函式。
函式 get_num
應該對所有現有的(已經建立的)以及 A
的新例項可用
這些新增可自動在該類(或其子類)的所有例項上使用。例如:
foo = A(42)
A.get_num = get_num
bar = A(6);
foo.get_num() # 42
bar.get_num() # 6
請注意,與其他一些語言不同,此技術不適用於某些內建型別,並且它不被認為是好的樣式。