2016-07-05 4 views
0

Ich habe irgendwann für ganz dafür suchen und auch bei zuvor sah Erstellen gestellte Fragen wie:eine Klasse in Python eine Zeichenfolge als Klassennamen

how to dynamically create an instance of a class in python?

Does python have an equivalent to Java Class.forName()?

Can you use a string to instantiate a class in python?

Und auch viele mehr, in einigen von ihnen importieren sie die Klasse oder verwenden den Namen der Klasse irgendwie in der Definition.

Edit:

Ich brauche eine Liste als Eingabe zu nehmen und erstellen Klassen mit Strings in der Liste wie ihr Name.

store_list = {'store1', 'storeabc', 'store234'} 

Jetzt kann ich tun,

store1 = type(store_list[0], (models.Model,), attrs) 
storeabc = type(store_list[1], (models.Model,), attrs) 
store234 = type(store_list[2], (models.Model), attrs) 

Aber ich immer noch die Namen der Klasse in irgendeiner Weise im Code verwenden müssen, habe ich keine Möglichkeit zu wissen, was die Liste sein wird, und Ich möchte, dass die Klassen mit Namen aus der Liste erstellt werden.

+1

Haben Sie ein Objekt aus einer Klasse erstellen oder wollen Sie die Klasse selbst dynamisch erstellen? Wenn Sie später [diese Frage] (http://stackoverflow.com/questions/10555844/dynamic-creating-a-class-from-file-in-python) betrachtet haben? – syntonym

+2

Wir brauchen [MCVE] - Beispieleingabe und erwartete Ausgabe. –

+0

Hinzugefügt ein bisschen mehr Informationen über das, was ich tun möchte. – Osiris92

Antwort

1

Sie können die Klassen, die Sie dynamisch erstellen, in einem Wörterbuch speichern und Klassennamen Klassen zuordnen. Auf diese Weise können Sie ein solches Wörterbuch verwenden, um später im Code auf Ihre Klassen mit Namen zuzugreifen, z. um Instanzen zu erstellen. Zum Beispiel:

store_list = {'store1', 'storeabc', 'store234'} 
name2class = {} 
for name in store_list: 
    name2class[name] = type(name, (models.Model,), attrs) 
. . . 
my_instance = name2class[name](...) 
Verwandte Themen