猴子修補

在這種情況下,猴子修補意味著在定義之後向類中新增新的變數或方法。例如,假設我們將類 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

請注意,與其他一些語言不同,此技術不適用於某些內建型別,並且它不被認為是好的樣式。