Вопрос-Ответ

Using a string variable as a variable name [duplicate]

Использование строковой переменной в качестве имени переменной

У меня есть переменная с присвоенной ей строкой, и я хочу определить новую переменную на основе этой строки.

foo = "bar"
foo = "something else"
# What I actually want is:
bar = "something else"
Переведено автоматически
Ответ 1

Вы можете использовать exec для этого:

>>> foo = "bar"
>>> exec(foo + " = 'something else'")
>>> print bar
something else
>>>
Ответ 2

Вам будет намного удобнее использовать словарь вместо этого:

my_data = {}
foo = "hello"
my_data[foo] = "goodbye"
assert my_data["hello"] == "goodbye"
Ответ 3

Вы можете использовать setattr

name  = 'varname'
value = 'something'

setattr(self, name, value) #equivalent to: self.varname= 'something'

print (self.varname)
#will print 'something'

Но, поскольку вы должны сообщить объекту о получении новой переменной, это работает только внутри классов или модулей.

python