I believe your problem is __rsub__, not __sub__. When you have <something else> <operator> <something of this class> then that uses the "r" version of the operators.
In your __rsub__ (used when you have <other> - <this>) you instead return <this> - <other> which is backwards. Notice how the final return should also be -4,95 and not the +4,95 it's returning. > If on the left side is '0' the result of a subtraction is wrong. > > * b1 = Betragswert(500) > b2 = 0 + b1 > b3 = 0 - b1 > b4 = 5 + b1 > b5 = 5 - b1* > > print(b1, b2, b3, b4, b5) shows 5,00 5,00 5,00 5,05 4,95; the third > value (b3) should be -5,00 (not 5,00). > > Why is the substraction wrong? > def __rsub__(self, zweiter): > if not isinstance(zweiter, type(self)): > zweiter = Betragswert(zweiter) > return Betragswert(self._Betrag - zweiter._Betrag) -- https://mail.python.org/mailman/listinfo/python-list