Why does calling Python’s ‘magic method’ not do type conversion like it would for the corresponding operator?
a – b isn’t just a.__sub__(b). It also tries b.__rsub__(a) if a can’t handle the operation, and in the 1 – 2. case, it’s the float’s __rsub__ that handles the operation. >>> (2.).__rsub__(1) -1.0 You ran a.__rsub__(2.), but that’s the wrong __rsub__. You need the right-side operand’s __rsub__, not the left-side operand. There is no … Read more