関数の呼び出し時の処理を入れ替える

関数は、func_codeというattributeにcode objectなるものが入っているそうな。
これが実際に行う処理を持っているようなので、呼び出したときの処理をここで変更することができる。

>>> def hoge():
...     print 'hoge'
... 
>>> def fuga():
...     print 'fuga'
... 
>>> hoge()
hoge
>>> fuga()
fuga
>>> hoge.func_code = fuga.func_code
>>> hoge()
fuga
>>> 

なるほどねー。こんなことができるのか。
だんだんPythonが面白くなってきたw