2016-09-10 6 views
1

Pythonクラスで、インスタンス化するクラスまたはモジュールの名前(または他の識別子)を参照することは可能ですか?例えばPythonモジュールがクラスをインスタンス化したかどうかを確認しますか?

main.pyを実行

# mymodule.py 

class MyClass(): 
    def __init__(self): 
     print(instantised_by) 

#main.py 

from mymodule import MyClass 

instance = MyClass() 

は印刷する必要があります:

main 

またはそのような何かを。

これは可能ですか?

答えて

0

inspectでスタック情報を調べて、発信者スタックを__init__から得ることができます(覚えておいてください、単なる関数です)。これから、呼び出し元の関数名、モジュール名などの情報を取得できます。

この質問を参照してください。Get __name__ of calling function's module in Python

0

tracebackモジュールで:

import traceback 

class MyClass(): 
    def __init__(self): 
     file,line,w1,w2 = traceback.extract_stack()[1] 
     print(w1) 
+0

これは 'main.py'から実行したときいや、それは' main'を印刷し__init__' –

+0

'印刷されます。試してみてください。 –

関連する問題