Перегрузка оператора в python с объектом на правой стороне оператора
Недавно я узнал о перегрузке операторов в python и хотел бы знать, возможно ли следующее.
Рассмотрим следующую гипотезу / надуманный класс.
<code>class My_Num(object): def __init__(self, val): self.val = val def __add__(self, other_num): if isinstance(other_num, My_Num): return self.val + other_num.val else: return self.val + other_num </code>
Я знаю, что так, как написано выше, я могу делать такие вещи
<code>n1 = My_Num(1) n2 = My_Num(2) n3 = 3 print n1 + n2 print n1 + n3 </code>
и те будут работать, как ожидалось. Я также знаю, что так, как написано в настоящее время, я не могу этого сделать.
<code>n1 = My_Num(1) n2 = 2 print 2 + n1 </code>
Есть ли что-нибудь вокруг этого? Я знаю, что этот пример надуманный, но у меня есть приложение, в котором было бы очень полезно, если бы при перегрузке оператора класс, для которого я определяю оператор, мог появиться в правой части оператора. Возможно ли это в Python?