2016-05-25 8 views
0

Gibt es eine Möglichkeit, um Auto-Objekte in Python erstellenWie erstellt man automatisch Objekte für eine Klasse?

class A: 
    pass 
a = A() 

ich automatisch Objekte möchte für eine Klasse erstellen. Ich muss eine Reihe von XML analysieren und ich möchte ein Objekt für eine Datei erstellen (entry parse). Oder muss ich einige zufällige Namen erstellen?

+1

sieht aus wie ein Duplikat von http://stackoverflow.com/questions/3451779/how-to-dynamically-create-an-instance-of-a-class-in-python –

+0

Es ist nicht klar aus Ihrer Beschreibung, wo Sie geraten in Schwierigkeiten. Sie haben bereits Code geschrieben, der automatisch eine Instanz 'a' Ihrer Klasse' A' erstellt. Wenn Sie viele Instanzen dieser Klasse benötigen, können Sie sie in einer Liste speichern, z. B. 'files = ['file1.xml', 'file2.xml']; Parser = [A (f) für f in Dateien] '. Aber andere Optionen sind möglich, abhängig von Ihrem Problem ... –

Antwort

1

Sie müssen den Objektinstanzen keine Variablennamen manuell zuweisen, sondern sie einfach in einer Liste speichern, wenn Sie sie dynamisch erstellen, wie in diesem Beispiel eine Liste von Objekten mit Informationen aus einer Datei erstellt wird:

class A: 
    def __init__(self, words): 
     self.words = words 

a_objects = [] 
file = open("testfile.txt") 
for line in file: 
    words = line.split() 
    a_objects.append(A(words)) 

Wenn Sie die Objekte direkt mit einem Schlüssel zugreifen müssen, werden Sie ein Wörterbuch statt einer Liste verwenden müssen:

a_objects = {} 

Sie können wie folgt es Schlüssel-Wert-Paare hinzufügen:

words = line.split() 
key = words[0] 
a_objects[key] = A(words) 
+0

Es gibt ')' fehlt in 'a_objects.append (A (Wörter)' – abukaj

+0

@abukaj Hoppla, du hast Recht, natürlich. Danke, dass du darauf hinweist, Ich habe es behoben –

+0

Vielen Dank, weil ich etwas frustrierend darüber bin, wie create object nicht nur manuell einer Variablen zugewiesen wird ( –

Verwandte Themen