Sie sagen, die Ausgabe sollte lauten:
%Vor%Eigentlich sollte es sein:
%Vor% Weil Sie diesen ersten Punkt mit [point(0, i) for i in range(-1, -5, -1)]
erstellen (beachten Sie, dass der Parameter x
0
ist).
Dies ist eine Konsequenz von (self.test1[0], self.test2[0], self.test1[0] + self.test2[0]))
wird ausgewertet - die Addition ändert den ersten Punkt in diesem Tupel (sie sind das gleiche Objekt). Dies ist auch der Grund, warum Ihr zweites Beispiel korrekt funktioniert (oder so aussieht) - Sie drucken das modifizierte Objekt nur einmal.
Die Implementierung von __add__
, die Sie bereitstellen, eignet sich für __iadd__
, um den Operator +=
zu implementieren. Eine korrekte Implementierung sollte ein vollständig neues Objekt point
erstellen:
Tags und Links python python-3.x