исправление локального экземпляра - PullRequest
1 голос
/ 23 октября 2011

рассмотрим, у меня есть следующий код в модуле python a.py:

def func():
    obj = Obj()
    # Some code that uses obj

Есть ли способ обезьяньего патча obj без указания аргумента функции?

Причина: В контексте самого кода это не должно быть аргументом, однако в контексте тестирования и моделирования системы с использованием кода исправление является разумным.Также в различных сценариях мне может потребоваться исправить различные локальные объекты и разместить их все в качестве аргументов. Это утомительно.

1 Ответ

2 голосов
/ 24 октября 2011
# if func() is defined in `a.py`
import a

oldObj, a.Obj = a.Obj, MockObj
a.func()
a.Obj = oldObj
...