Использование строковой переменной в качестве имени переменной
У меня есть переменная с присвоенной ей строкой, и я хочу определить новую переменную на основе этой строки.
foo = "bar"foo = "something else" # What I actually want is: bar = "something else"
Переведено автоматически
Ответ 1
Вы можете использовать exec для этого:
exec
>>> foo = "bar">>> exec(foo + " = 'something else'")>>> print barsomething else>>>
Ответ 2
Вам будет намного удобнее использовать словарь вместо этого:
my_data = {}foo = "hello"my_data[foo] = "goodbye"assert my_data["hello"] == "goodbye"
Ответ 3
Вы можете использовать setattr
setattr
name = 'varname'value = 'something'setattr(self, name, value) #equivalent to: self.varname= 'something'print (self.varname)#will print 'something'
Но, поскольку вы должны сообщить объекту о получении новой переменной, это работает только внутри классов или модулей.