André wrote: > On Jan 5, 8:14 pm, Matt Haggard <haggar...@gmail.com> wrote: >> Can anyone tell me why this test fails? >> >> http://pastebin.com/f20039b17 >> >> This is a minimal example of a much more complex thing I'm trying to >> do. I'm trying to hijack a function and inspect the args passed to it >> by another function. >> >> The reason the 'Tester' object has no attribute 'arg1' is because >> "self" still refers to the object made for testA. > > Quick answer: change faketest.py as follows: > > #-------------------------------------------------- > # faketest.py > #-------------------------------------------------- > > #from importme import render > import importme > > def run(somearg): > return importme.render(somearg) > > ========= > A long answer, with explanation, will cost you twice as much ;-) > (but will have to wait) > > André
Or you figure it out yourself staring at >>> import os >>> from os import rename >>> os.rename = 42 >>> rename <built-in function rename> >>> os.rename 42 from module import name binds the object referred to by module.name to the name variable in the current module. You can think of it as a shortcut for import module name = module.name del module When you later rebind import module module.name = something_else the reference in the current module isn't magically updated to point to something_else. Peter -- http://mail.python.org/mailman/listinfo/python-list