Seite 1 von 1

Operator überladen

Verfasst: Freitag 27. Februar 2004, 21:38
von Gast
hallo zusammen,
habe 2 listenobjekte und möchte verschiedene rechenoperationen darauf anwenden(+-*/)
vordefiniert(für listen!!) ist nur die funktion __add__
mein problem.....
beim ausführen von z.b. a - b(a und b sind listen) erkennt python nicht meine vorgefertigte def von __sub__ und gibt mir eine fehlermeldung
TypeError: unsupported operand type(s) for -: 'list' and 'list'
zurück.
woran liegt es das python meine überladenen operatoren nicht erkennt, muss ich noch irgendetwas ein-,an- odersonstwasfügen.
danke

Re: Operator überladen

Verfasst: Freitag 27. Februar 2004, 21:40
von Gast
Anonymous hat geschrieben:hallo zusammen,
habe 2 listenobjekte und möchte verschiedene rechenoperationen darauf anwenden(+-*/)
vordefiniert(für listen!!) ist nur die funktion __add__
mein problem.....
beim ausführen von z.b. a - b(a und b sind listen) erkennt python nicht meine vorgefertigte def von __sub__ und gibt mir eine fehlermeldung
TypeError: unsupported operand type(s) for -: 'list' and 'list'
zurück.
woran liegt es, dass python meine überladenen operatoren nicht erkennt, muss ich noch irgendetwas ein-,an- odersonst was hinzufügen.
danke

Verfasst: Freitag 27. Februar 2004, 21:46
von Dookie
Hi Gast,

solange Listen Listen bleiben werden auch nur die für Listen geltenden Operatoren funktionieren. Du musst schon eingene, von Listen abgeleitete Classen benutzen.

Code: Alles auswählen

>>> class myList(list):
...     def __add__(self, other):
...         return [a+b for a,b in zip(self, other)]
...     def __sub__(self, other):
...         return [a-b for a,b in zip(self, other)]
...
>>> l1 = myList((1,2,3))
>>> l2 = myList((5,6,7))
>>> print l1+l2
[6, 8, 10]
>>> print l1-myList([7,4,9])
[-6, -2, -6]

Gruß

Dookie