Variablenersetzung in Methoden-Aufruf

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
dimflmoser
User
Beiträge: 3
Registriert: Freitag 10. Juni 2011, 10:11

Hallo zusammen,

ich bin recht neu in Python und komm' nicht weiter. Methoden oder Eigenschaften von Klassen rufe ich über die Punktnotation auf, z. B.

Code: Alles auswählen

Klasse.methode()
Klasse.eigenschaft
Was tue ich aber nun, wenn der Name der Methode bzw. Eigenschaft in einer Variablen gespeichert ist? Ich dachte da an sowas wie:

Code: Alles auswählen

var = "methodenName"
Klasse.${var}()
bzw.

Code: Alles auswählen

var = "eigenschaft"
Klasse.${var}
Nun ja, das war wohl schön gedacht, ruft aber einen Syntax-Fehler hervor.

Hat jemand eine Idee?

Danke Helmut
lunar

@dimflmoser: "obj.${var}" ist ziemlicher Blödsinn ... raten ist keine sonderlich sinnvolle Taktik beim Programmieren :) Python bietet die Funktion "getattr()" zum dynamischen Attributzugriff:

Code: Alles auswählen

getattr(obj, 'simple_attribute')
getattr(obj, 'method')()
Zuletzt geändert von lunar am Freitag 10. Juni 2011, 10:34, insgesamt 2-mal geändert.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

dimflmoser hat geschrieben:

Code: Alles auswählen

var = "methodenName"
Klasse.${var}()
bzw.

Code: Alles auswählen

var = "eigenschaft"
Klasse.${var}
Syntax-Raten? hehe :D

Versuchs mal mit

Code: Alles auswählen

obj = Klasse()
x = getattr(obj, 'eigenschaft')
In specifications, Murphy's Law supersedes Ohm's.
Antworten