Viele Zugriffe auf ein Objekt - Kürzere Schreibweise gesucht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PythonRegius
User
Beiträge: 2
Registriert: Dienstag 28. Mai 2013, 19:59

Hallo,
ich habe mich soeben angemeldet und habe auch direkt eine Frage :-)
Leider wusste ich nicht genau, wie ich die Frage am besten formulieren soll, deshalb der vielleicht verwirrende Titel.
In einem Python-Skript weise ich verschiedenen Objekten bzw. deren Attributen bestimmte Werte zu. Das sind sehr viele Zuweisungen und ich habe mich gefragt ob es da so etwas wie eine Kurzschreibweise gibt.

Ich denke eine kurze Skizzierung des Problems macht es vielleicht deutlicher was ich meine:

Ich habe ungefähr so etwas:

Code: Alles auswählen

Obj1.Foo1.Bar1 = Val1
Obj1.Foo2.Bar2 = Val2
Obj1.Foo3.Bar3 = Val3
Obj1.Foo4.Bar4 = Val4
Obj1.Foo5.Bar5 = Val5
Obj1.Foo6.Bar6 = Val6
Und würde stattdessen lieber so etwas schreiben, wie:

Code: Alles auswählen

Verwende Obj1
{
Foo1.Bar1 = Val1
Foo2.Bar2 = Val2
Foo3.Bar3 = Val3
Foo4.Bar4 = Val4
Foo5.Bar5 = Val5
Foo6.Bar6 = Val6
}
Gibt es so eine Möglichkeit in Python?

Danke!
BlackJack

@PythonRegius: Syntax gibt es dafür nicht, und soweit ich weiss haben die Entwickler von Programmiersprachen die so etwas haben, das alle irgendwann bereut. :-)

Du kannst Dir natürlich mit `getattr()` und `setattr()` eine Funktion schreiben, die so etwas ähnliches macht, nämlich `Obj1` und zum Beispiel eine Liste mit Tupeln (Attributname als Zeichenkette, neuer Wert) entgegen nimmt, und jeweils das erste Attribut abfragt und darauf das zweite dann setzt.
PythonRegius
User
Beiträge: 2
Registriert: Dienstag 28. Mai 2013, 19:59

Aha ok, danke für die Auskunft.

Die Frage kam eigentlich auf, weil ich die Objekte mit "print" komplett ausgeben lasse und dann den Text wieder in meinem Skript verwende. Da fehlt dann am Anfang eben immer der Objektname und der Punkt. Mit einfacher Textersetzung hatte ich es auch versucht, das klappt zwar, es werden aber auch ein paar falsche Ersetzungen vorgenommen.

Ich habe jetzt einfach alle Objektnamen manuell eingefügt...
Antworten