Operador sobrecarregado em python com o objeto do lado direito do operador
Eu recentemente aprendi sobre sobrecarga de operador em python e gostaria de saber se o seguinte é possível.
Considere a seguinte classe hipotética / inventada.
<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>
Eu sei que da maneira que está escrito acima, eu posso fazer coisas assim
<code>n1 = My_Num(1) n2 = My_Num(2) n3 = 3 print n1 + n2 print n1 + n3 </code>
e esses funcionarão como esperado. Eu também sei que a maneira que está atualmente escrita eu não posso fazer isso
<code>n1 = My_Num(1) n2 = 2 print 2 + n1 </code>
Existe alguma maneira de contornar isso? Eu sei que este exemplo é planejado, mas eu tenho uma aplicação em que seria muito útil se, quando eu fiz sobrecarga de operador, a classe para a qual eu defino o operador pode aparecer no lado direito do operador. Isso é possível em python?