Sobrecarga del operador en python con el objeto en el lado derecho del operador
Recientemente me enteré de la sobrecarga de operadores en python y me gustaría saber si es posible lo siguiente.
Considere la siguiente clase hipotética / ideada.
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
Sé que la forma en que está escrito arriba, puedo hacer cosas como esta
n1 = My_Num(1)
n2 = My_Num(2)
n3 = 3
print n1 + n2
print n1 + n3
y esos funcionarán como se espera. También sé que la forma en que está escrito actualmente no puedo hacer esto
n1 = My_Num(1)
n2 = 2
print 2 + n1
¿Hay alguna manera alrededor de esto? Sé que este ejemplo está diseñado pero tengo una aplicación en la que sería muy útil si al realizar la sobrecarga del operador, la clase para la que definí al operador pueda aparecer en el lado derecho del operador. ¿Es esto posible en python?