自作モジュールに問題にチューンした処理を追加しないといけないことがあって,types.MethodTypeでメソッドを追加しようとした話.
自作モジュール内でimportされたモジュールを使う時,どうすればいいのかなー,とか,自作モジュール内のimport時につけた別名と被ったらどうなるのかなー,とか調べてみた.
おおむね予想通り.
自作モジュールを丸ごとimportしてたら参照できるけど,from/importでクラスしか取り込んでなかったら,別途,importしないといけない.
別名が被ったところで,スコープが被るわけじゃないから,人が見て分かりにくいことを除けば問題なくスコープ内のモジュールが呼び出される.
ということを全部は反映してないけど,簡単な使い方メモ.
これは,unbundle版.
import numpy as np class MyModule: def test(self): return np.array([1,2,3])
import types import mymodule def new_test(self): return mymodule.np.array([4]) mymodule.MyModule.additionalMethod = \ types.MethodType(new_test, None, mymodule.MyModule) mymod = mymodule.MyModule() print mymod.test() print mymod.additionalMethod()
実行結果
$ python mydriver.py [1 2 3] [4]