monkey patching __code__

dieter dieter at handshake.de
Wed Mar 23 04:24:16 EDT 2016


"Sven R. Kunze" <srkunze at mail.de> writes:
> ...
> As far as I can see, the code replacement approach solves the problem
> once and for all. Thus is far more stable.
>
> Manually finding out every single module that might or might not have
> imported "reverse" before we could monkeypatch it might result in a
> maintenance nightmare (just think about a Django upgrade).

But you have observed that you cannot do everything with a
code substitution: a function call does not only depend on the code
but also on other properties of the function object: e.g. the
parameter processing.

You might be able to change them in a similar way as "__code__" (i.e.
direct modification). Otherwise, you would need to construct a new
"function object" -- and lose the possibility to completely
change the function object in place.




More information about the Python-list mailing list