Недавно я узнал о перегрузке операторов в python и хотел бы знать, возможно ли следующее.
Рассмотрим следующий гипотетический/придуманный класс.
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
Я знаю, что так, как описано выше, я могу делать подобные вещи,
n1 = My_Num(1)
n2 = My_Num(2)
n3 = 3
print n1 + n2
print n1 + n3
и они будут работать так, как ожидалось. Я также знаю, что так, как сейчас написано, я не могу этого сделать.
n1 = My_Num(1)
n2 = 2
print 2 + n1
Есть ли что-нибудь вокруг этого? Я знаю, что этот пример надуман, но у меня есть приложение, в котором было бы очень полезно, если бы при перегрузке оператора класс, для которого я определяю оператор, мог появиться справа от оператора. Возможно ли это в питоне?