Seite 1 von 1

Überladen von Operatoren

Verfasst: Sonntag 9. Mai 2004, 18:56
von Florian R.
Hallo zusammen,

ich hab mich jetzt schon seit geraumer Zeit durch alle Möglichen Quellen geklickt und dazu nix gefunden.

Bzw. nur viel zu schwer erklärt.

Mein Problem: Ich möchte eine Klasse stack programmieren (fertig) und dem Benutzer die Möglichkeit geben zwei Objekte dieser Klasse über den Operator "+" miteinander zu einem neuen zu verbinden. Sprich: Wie kann ich das "+" überladen? So wie bei Listen. Wenn man zwei Listen hat und liste1+liste2 eingibt, werden beide zu einer zusammengefügt. Wie funktioniert das bei einem selbstdefinierten Objekt (in dem Fall ein Stack)?

Vielen Dank schonmal.

Gruß, Florian

Verfasst: Sonntag 9. Mai 2004, 20:30
von oenone
guck dir __add__ und __radd__ an..

siehe google, z.b.:

http://www.linuxgazette.com/issue54/pramode.html

auf bald
oenone

Verfasst: Montag 10. Mai 2004, 00:08
von Dookie
Hi Florian,

Code: Alles auswählen

class Stack(object):
    ... #Deine Methoden u.s.w
    def __add__(self, other):
        from copy import copy
        result = copy(self) # erstmal eine Kopie von self erstellen
        for entry in other: # alle Einträge in other durchlaufen und
            result.push(entry) # zur Kopie von self hinzufügen
        return result
# fertig

Gruß

Dookie

P.S.: mit list.append() und list.pop() kannst Du auch ganz normale Listen wie einen Stack verwenden.

P.P.S.: ich hab den Thread nach Allgemeine Fragen verschoben

Verfasst: Montag 10. Mai 2004, 15:19
von Florian R.
Hey super danke. Das hat mir geholfen :D

Gruß, Florian