180 votes

Utilisation d'une variable chaîne comme nom de variable

Dupliquer possible :
Comment puis-je faire des variables variables en Python ?

J'ai une variable avec une chaîne qui lui est assignée et je veux définir une nouvelle variable basée sur cette chaîne.

foo = "bar"
foo = "something else"   

# What I actually want is:

bar = "something else"

286voto

Jack Leow Points 11081

Vous pouvez utiliser exec pour cela :

>>> foo = "bar"
>>> exec(foo + " = 'something else'")
>>> print bar
something else
>>> 

174voto

Ned Batchelder Points 128913

Vous serez beaucoup plus heureux en utilisant un dictionnaire à la place :

my_data = {}
foo = "hello"
my_data[foo] = "goodbye"
assert my_data["hello"] == "goodbye"

123voto

Gustavo Vargas Points 640

Vous pouvez utiliser setattr

name  = 'varname'
value = 'something'

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

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

Mais, puisque vous devez informer un objet pour recevoir la nouvelle variable, cela ne fonctionne qu'à l'intérieur des classes ou des modules.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X