[解決済み] Pythonで関数を呼び出しているモジュールの__name__を取得する
2022-09-08 06:29:34
質問
仮に
myapp/foo.py
が含まれているとします。
def info(msg):
caller_name = ????
print '[%s] %s' % (caller_name, msg)
そして
myapp/bar.py
が含まれます。
import foo
foo.info('Hello') # => [myapp.bar] Hello
私は
caller_name
に設定する。
__name__
属性に設定する必要があります。これはどのようにしたらできるのでしょうか?
どのように解決するのですか?
inspect モジュールを確認してください。
inspect.stack()
はスタック情報を返します。
関数の内部で
inspect.stack()[1]
は呼び出し元のスタックを返します。 そこから、呼び出し元の関数名、モジュールなどの詳細な情報を得ることができます。
詳しくはドキュメントをご覧ください。
http://docs.python.org/library/inspect.html
また、Doug Hellmannは彼のPyMOTWシリーズでinspectモジュールの素晴らしい記事を書いています。
http://pymotw.com/2/inspect/index.html#module-inspect
編集:以下は、あなたが望むことを行ういくつかのコードです、私は思います。
import inspect
def info(msg):
frm = inspect.stack()[1]
mod = inspect.getmodule(frm[0])
print '[%s] %s' % (mod.__name__, msg)
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] 億の相対的輸入
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】複数のモジュールでロギングを使用する
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] バブルソートの宿題
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Python Empty Generator 関数
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonでファイルの読み込みと上書きをする