Naheliegend wäre:
Code: Alles auswählen
class Grad(int):
def __add__(self, other):
return (self + other) % 360
Das funktioniert jedoch nicht, weil dann immer wieder die von dir überschriebene Methode erneut aufgerufen wird.
Die richtige Lösung ist, dass man die
__add__()-Methode der Elternklasse aufruft:
Code: Alles auswählen
class Grad(int):
def __add__(self, other):
return int.__add__(self, other) % 360
Das soll aber wirklich nur zu Übungszwecken dienen. In der Praxis ist das Erben von Builtin-Typen meistens eine ganz schlechte Idee. Wenn du einmal angefangen hast, dann müsstet du auch definierten, was bei Minus, Mal, usw passieren soll. Außerdem gibt dir das obige Beispiel als Ergebnis nicht mehr etwas vom Typ
Grad zurück, sondern einen
int. Wenn man dies beachtet, dann müsste es so aussehen:
Code: Alles auswählen
class Grad(int):
def __add__(self, other):
return Grad(int.__add__(self, other) % 360)
Du siehst: Es ist allein schon für so ein kleines Beispiel recht kompliziert, wenn man konsistente Ergebnisse liefern will.