2016-05-22 3 views
0

Ich habe eine Klasse namens Square. Ich versuche, Zeichenfolgen in Variablen zu konvertieren und jeden mit derselben Klasse zuzuweisen.Wie ordne ich dynamische Variablen mit der gleichen Klasse zu?

a = 'var' 
exec("%s = %d" % (a,Square())) 

Der obige Beispielcode wird nicht funktionieren, da der Fehler integer Platz zu verwenden, sagt nicht:

TypeError: %d format: a number is required, not Square 

Was hat sich das% d in dieser Arbeit für geändert werden?

+0

Warum Sie Variablen müssen an erster Stelle setzen? Verwenden Sie stattdessen ein Wörterbuch: 'namespace = {a: Square()}' legt einen Schlüssel ''var'' für die Instanz fest. –

Antwort

0

Sie versuchen, ein Square Objekt für einen int Platzhalter zu setzen.

In Ihrer Frage haben Sie jedoch angegeben, dass Sie eine dynamische Variable zuweisen möchten.

Versuchen Sie, diese

var_name = "a" 
exec("%s = Square()" % var_name) 

Sie exec das Square Objekt erstellt werden soll.

Beachten Sie, dass "dynamische Variablen" wahrscheinlich nicht das sind, was Sie wollen. Sie werden die gleichen Schwierigkeiten haben, wenn Sie den Wert der Variablen eingeben.

Werfen Sie einen Blick auf die dict Klasse. Damit können Sie Objekte, die durch einen Schlüssel repräsentiert werden, sehr einfach speichern.

Zum Beispiel

# create a dictionary 
my_squares = {} 

# create the square and put it into the dict 
my_squares["some name"] = Square() 

# do whatever you want with your square 
print(my_squares["some name"]) 
1

ein Wörterbuch verwenden funktioniert gut

x = {} 
a = 'var' 
x[a]= Square() 
Verwandte Themen