Когда я 1-2.0
число с плавающей точкой из целого числа (например, 1-2.0
), Python делает неявное преобразование типов (я думаю). Но когда я называю то, что считал одной и той же операцией, используя магический метод __sub__
, это неожиданно __sub__
быть.
Что мне здесь не хватает? Когда я перегружаю операторы для своих собственных классов, есть ли способ обойти это, кроме явного приведения ввода к тому типу, который мне нужен?
a=1
a.__sub__(2.)
# returns NotImplemented
a.__rsub__(2.)
# returns NotImplemented
# yet, of course:
a-2.
# returns -1.0