Mam problem z zastąpieniem funkcji z innego modułu inną funkcją i doprowadza mnie to do szału.
Powiedzmy, że mam moduł bar.py, który wygląda następująco:
from a_package.baz import do_something_expensive
def a_function():
print do_something_expensive()
Mam inny moduł, który wygląda tak:
from bar import a_function
a_function()
from a_package.baz import do_something_expensive
do_something_expensive = lambda: 'Something really cheap.'
a_function()
import a_package.baz
a_package.baz.do_something_expensive = lambda: 'Something really cheap.'
a_function()
Spodziewałbym się wyników:
Something expensive!
Something really cheap.
Something really cheap.
Ale zamiast tego otrzymuję to:
Something expensive!
Something expensive!
Something expensive!
Co ja robię źle?