mit getattr() auf beliebige Elemente zugreifen

Code-Stücke können hier veröffentlicht werden.
Antworten
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Sonntag 6. Oktober 2002, 09:24

Beispielaufgabe: Du hats eine Seite mit zwanzig Elementen QLineEdit. Diese sollen beim Programmstart mit irgendwelchen Werten vorbelegt werden. Man kann natürlich für jedes LineEdit Feld einge Zeilen schreiben, man kann aber auch eine Schleife einsetzen wie etwa folgende:

Code: Alles auswählen

    self.editFields = {}
    self.editFields = ['edField1', 'edField2', 'edField3']

    for field in self.editFields:
      attrib = getattr(self, field, None)
      if attrib == None:
        break
      attrib.setText(field)
Hans
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Sonntag 6. Oktober 2002, 11:00

Hallo!

Was mir noch auffiel nach Absenden meines anderen Beitrags zu Thema:

- In der ersten Zeile erzeugst Du ein leeres *Dictionary*. Ist allerdings nicht schädlich da, Du es danach gleich wieder mit einer Liste überschreibst.

- wäre ein continue anstelle eines break nicht besser, damit, wenn das Programm das Attribut self.edField1 nicht findet, wenigstens die anderen Attribute noch bearbeitet werden? Hängt sicherlich von der Programmlogik ab.

Jan
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Sonntag 6. Oktober 2002, 15:47

Voges hat geschrieben:- In der ersten Zeile erzeugst Du ein leeres *Dictionary*. Ist allerdings nicht schädlich da, Du es danach gleich wieder mit einer Liste überschreibst.

- wäre ein continue anstelle eines break nicht besser, damit, wenn das Programm das Attribut self.edField1 nicht findet, wenigstens die anderen Attribute noch bearbeitet werden? Hängt sicherlich von der Programmlogik ab.

Jan
Nee, hat nix mit Programmlogik zu tun, ist halt erst meine zweite Woche mit Python und deshalb noch ein Anfängerfehler!

Trotzdem Danke

Hans
Antworten