投稿日: Jun 03, 2019 8:32:46 AM
Pythonでスクリプトを分けてimportとかしているとふと困ったことに遭遇する。
いま自分をimportしてるヤツは誰なんだ。
親を参照する方法は?
ってことで。
mod.py
import inspect
def parentCall():
parent = inspect.getmodule(inspect.stack()[1][0])
parent.test()
main.py
import mod
def test():
print("test")
mod.parentCall()
流れとしては。
main はmod.pyを読み込み、parentCall()を呼び出す。
mod.parentCall()は自分を参照している親のモジュール名を取得し、親のモジュールにあるtestファンクションを呼び出す。
main.test() が呼び出されて画面に test と表示される。
なんとなく複雑だけどもっと簡潔にできないのかなこれ。
クラスにして__init__でオブジェクト渡してしまうのが手っ取り早いといえば手っ取り早いのだけどかっこ悪いですしねー。