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
Überladen von Operatoren
-
- User
- Beiträge: 75
- Registriert: Mittwoch 27. August 2003, 14:39
- Wohnort: 49°17'28N, 8°15'57E
- Kontaktdaten:
guck dir __add__ und __radd__ an..
siehe google, z.b.:
http://www.linuxgazette.com/issue54/pramode.html
auf bald
oenone
siehe google, z.b.:
http://www.linuxgazette.com/issue54/pramode.html
auf bald
oenone
if you don't remember something, it never happened.
if you aren't remembered, you never existed.
i don't quite understand what love is like... but if there was someone who liked me, i'd be happy.
if you aren't remembered, you never existed.
i don't quite understand what love is like... but if there was someone who liked me, i'd be happy.
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Florian,
# 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
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
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