Langweilige Methodenüberschreibung

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.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Du rufst mit "x.op(2)' immer die Methode "op" des Objektes "x" mit dem
Parameter 2 auf. Nicht deine Absicht, oder?

So könnte man das machen:
http://paste.pocoo.org/show/112480/
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Vielen Dank erstmals!

Ich bleibe am Ball und versuche, eure Vorschläge zu verstehen, was allerdings eine Weile dauern wird.

Code: Alles auswählen

isdifficult('python')==True #*seufz*
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Vielleicht als kleine Hilfe: Wenn du auf ein Attribut mittels

Code: Alles auswählen

x.attr
zugreifst, dann darfst du dir "attr" nicht als eine Variable vorstellen, denn "attr" ist hier ein Name. Andernfalls könntest du (unbeabsichtigt) sehr seltsame Effekte erzeugen.
Das Leben ist wie ein Tennisball.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Zum Thema: Gibt es eine Möglichkeit, dem Interpreter mitzuteilen, er möge doch für jede Operation den Wert aus einer Funktion nehmen? Dann müsste man für solche Sonderklassen nicht jede Operation implementieren.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Klar: "__getattr__", bzw. "__getattribute__" oder mittels Vererbung und natürlich Metaklassen.
Das Leben ist wie ein Tennisball.
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Sofern die Funktionen entsprechend kompatibel sind, kannst du auch im Namensraum der Klasse jeder gewünschten "magic method" mittels einfacher Zuweisung die Funktion zuteilen. Das erste Attribut wird dann als "self" interpretiert. Funktioniert natürlich nicht bei zb Funktionen aus dem Operator Modul, aber es kommt natürlich auf deine Funktion (oder eine entsprechende Methode der Klasse) an.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

EyDu hat geschrieben:Klar: "__getattr__", bzw. "__getattribute__" oder mittels Vererbung und natürlich Metaklassen.
Wie soll das aussehen?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hier im Forum und über Google lassen sich dutzende Beispiele finden.
Das Leben ist wie ein Tennisball.
Antworten