Когда мы выполняем операции вида:
left + right
Вызывается метод
left.__add__, но если left.__add__ возвращает NotImplemented, то вызываетсяright.__radd__, а если и этот метод возвращает NotImplemented, то выбрасывается ошибка TypeError.В нашем случае:
x = MyInt и мы переопределили метод __add__, принтанется int __add__, но далее мы возвращаем NotImplemented что заставляет вызвать метод MyFloat.__radd__.А
MyFloat.__add__ не будет вызыван, т.к. всегда вызывается __add__ левого операнда и только __radd__ правого соответсвенно.В итоге принтанется:
int __add__
float __radd__
10.0
#числа
