Перегрузка оператора в 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?

Ответы на вопрос(2)

Ваш ответ на вопрос