Najczęstszym rozwiązaniem byłoby Monkey patching (Patrz: stackoverflow: what is monkey patching)
Na przykład:
>>> import os
>>> os.listdir('.')
['file_a', 'file_b']
>>> os.listdir = lambda folder: ['nothing in here, nope!']
>>> os.listdir('.')
['nothing in here, nope!']
Było bardzo dobry talk na obiekcie w PyCon 2012, które można oglądać na youtube
Dyskusja daje również bardzo dobry przykład tego, gdzie łatanie małp może być przydatne: Powiedz, że masz bibliotekę innej firmy, która robi pewne rzeczy. Aby to zrobić, skrypt ten wymaga uruchomienia jako root, ale rzeczywista funkcjonalność nie wymaga uprawnień root'a. Teraz trzecia biblioteka może to sprawdzić pod numerem os.geteuid() == 0
. Dzięki łataniu małp w kodzie korzystającym z tej biblioteki można zastąpić geteuid
, aby udawać root'a, aby obejść to ograniczenie.
Używanie łatek dla małp to świetny sposób na szybkie naprawienie biblioteki. Złożenie raportu o błędzie i oczekiwanie na poprawkę może trochę potrwać, więc możesz pomóc sobie w ten sposób, bez wkopywania się do kodu źródłowego biblioteki.
U góry mojej głowy użyj funkcji otoki. –