2010-05-05 6 views
5

Ich habe eine Python-Klasse, und ich muss eine beliebige Anzahl von beliebig langen Listen hinzufügen. Die Namen der Listen, die ich hinzufügen muss, sind ebenfalls willkürlich. Zum Beispiel, in PHP würde ich das tun:Hinzufügen von variabel benannten Feldern zu Python-Klassen

class MyClass { 

} 

$c = new MyClass(); 
$n = "hello" 
$c.$n = array(1, 2, 3); 

Wie mache ich das in Python?

Ich frage mich auch, ob dies eine vernünftige Sache zu tun ist. Die Alternative wäre, ein Diktat der Listen in der Klasse zu erstellen, aber da die Anzahl und Größe der Listen willkürlich ist, hatte ich Angst, dass es einen Leistungseinbruch geben könnte.

Wenn Sie sich fragen, was ich zu erreichen versuche, schreibe ich einen superleichten Skript-Interpreter. Der Interpreter durchläuft eine von Menschen geschriebene Liste und erstellt eine Art Byte-Code. Der Byte-Code jeder Funktion wird als eine Liste gespeichert, die nach der Funktion in einer "App" -Klasse benannt ist. Ich bin gespannt auf weitere Vorschläge, wie das geht.

Antwort

5

Verwenden Sie setattr.

>>> class A(object): 
...  pass 
... 
>>> a = A() 
>>> f = 'field' 
>>> setattr(a, f, 42) 
>>> a.field 
42 
1

Ich würde es den einfachsten Weg für jetzt schreiben, und dann Profil, und dann schauen, um bestimmte Elemente zu optimieren.

Erinnern wir uns an das KISS-Prinzip.

+0

Einverstanden, danke –

+0

lol, sicher, aber ich wollte nur klarstellen, es klingt wie Sie noch im Traumstadium sind, so würde ich warten, bis Sie einen funktionierenden Prototyp haben, weil das klingt wie eine spezifische Optimierung. Die Diktatliste ist in Ordnung. – jcolebrand

+0

Ich habe einige Scheinklassen und fülle sie allmählich aus. Ich war gerade dabei, herauszufinden, wie ich die kompilierten Daten eines Skripts aufbewahre. Aber wirklich, bisher habe ich viel mehr gedacht und geträumt als Code, weil da Threads involviert sind und ich versuche nicht, mir den Fuß abzublasen :) –

Verwandte Themen