importした自作のモジュール内のクラスをリロードする
テストクラス作っていた時に、詰まったのでメモする。
python実装していて、自分で作ったモジュール(クラス)が今実装しているpyファイルとは別ディレクトリで、 別ディレクトリのモジュール内のクラスをimportするってことは往々にしてある。
はまったときは、テストクラス作っていた時は構成ファイルを変更してそれを反映する必要があった。
import時に読み込んでるからリロードせねばと思ったんだけど、うまくできず。
というのも、もう1回importしたら再読み込みされるんじゃね?みたいな考えだったからで、できなくて当然っちゃ当然。
何故かって、処理実行時に何度importしてもロードするのは1プロセス1回。
そりゃあ処理実行時にメモリにロードしてるんだから、当たり前なんだけど気づいてなかった。
方法
ディレクトリ構成
dir1
├dir2
│└ file1.py
└ dir3
└ file2.py
file1.py
class classLogic: (class内略)
file2.py(リロードするクラス)
import importlib from dir1.dir2.file1 import classLogic # リロード import dir1.dir2.file1 importlib.reload(dir1.dir2.file1) from dir1.dir2.file1 import classLogic
一旦、モジュールをリロードしてから、クラスをインポートするのがポイントみたい。