Контекст: Я делаю игру 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.
Как создать переменную в глобальной области видимости внутри класса, используя строку как имя переменной, без использования атрибутов или exec в python?
И да, я буду проверять работоспособность.
Если вы говорите, что это «глупая идея», почему бы не подумать о лучшей? – iTayb
Я говорю это просто из-за похожих вопросов, которые я видел, спросил, что результат в 20 ответов, которые не отвечают на исходный вопрос, и просто скажите, какая плохая идея – Amelia
Возможно, вам стоит сделать шаг назад и начать с объяснения причин вы думаете, что вам нужно или хотите это сделать. Вы, скорее всего, получите полезный ответ. – Iguananaut