コンテキスト: Ren'py ゲームを作成しています。値は Character() です。はい、私はこれがこの文脈の外ではばかげた考えであることを知っています。
クラスのスコープ外に存在するクラス内の入力文字列から変数を作成する必要があります。
class Test:
def __init__(self):
self.dict = {} # used elsewhere to give the inputs for the function below.
def create_global_var(self, variable, value):
# the equivalent of exec("global {0}; {0} = {1}".format(str(variable), str(value)))
# other functions in the class that require this.
Test().create_global_var("abc", "123") # hence abc = 123
vars()[]
、などを試しましたがglobals()[variable] = value
、単に機能しません (何も定義していません)編集:これは私の問題でした。
以下も同様に機能することはわかっていますが、変数を正しいスコープに入れたいです。
setattr(self.__class__, variable, value) # d.abc = 123, now. but incorrect scope.
Pythonで属性やexecを使用せずに、文字列を変数名として使用して、クラス内からグローバルスコープで変数を作成するにはどうすればよいですか?
そして、はい、私は正気をチェックします。