1. ホーム
  2. python

[解決済み] 現在のモジュールでsetattr()を呼び出すにはどうすればよいですか?

2022-04-27 22:41:22

質問

最初のパラメータとして何を渡せばよいのですか? object という関数に setattr(object, name, value) 現在のモジュールに変数を設定するために、?

例えば

setattr(object, "SOME_CONSTANT", 42);

と同じ効果を与える。

SOME_CONSTANT = 42

これらの行を含むモジュール内で (正しい object ).

モジュールレベルでいくつかの値を動的に生成しているのですが、その際に __getattr__ モジュールレベルで、これは私のフォールバックです。

解決方法は?

import sys

thismodule = sys.modules[__name__]

setattr(thismodule, name, value)

を使用するか、または、使用せずに setattr (質問の文字が壊れますが、同じ実用的な目的を満たします;-)。

globals()[name] = value

備考 : モジュールスコープでは、後者が相当します。

vars()[name] = value

というのはもう少し簡潔ですが、関数内では動作しません ( vars() グローバルスコープで呼ばれた場合はモジュールの変数、そしてR/Wで使用しても問題ありませんが、関数内で呼ばれた場合は関数の変数、そしてR/Oとして扱わなければなりません -- Pythonのオンラインドキュメントはこの特定の区別について少し混乱することがあります)。