自作モジュールに問題にチューンした処理を追加しないといけないことがあって,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]
