天天看點

“猴子更新檔”(monkey patching)指的是什麼?這種做法好嗎?

“猴子更新檔”就是指,在函數或對象已經定義之後,再去改變它們的行為。

舉個例子:

import datetime
datetime.datetime.now = lambda: datetime.datetime(2012, 12, 12)
      

大部分情況下,這是種很不好的做法 - 因為函數在代碼庫中的行為最好是都保持一緻。打“猴子更新檔”的原因可能是為了測試。

mock

包對實作這個目的很有幫助。