Przeciążenie operatora w Pythonie za pomocą obiektu po prawej stronie operatora

Niedawno dowiedziałem się o przeciążaniu operatorów w Pythonie i chciałbym wiedzieć, czy możliwe jest następujące.

Rozważmy następującą hipotetyczną / wymyśloną klasę.

<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>

Wiem, że tak jak napisano powyżej, mogę robić takie rzeczy

<code>n1 = My_Num(1)
n2 = My_Num(2)
n3 = 3
print n1 + n2
print n1 + n3
</code>

i te będą działać zgodnie z oczekiwaniami. Wiem też, że tak jak obecnie jest napisane, nie mogę tego zrobić

<code>n1 = My_Num(1)
n2 = 2
print 2 + n1
</code>

Czy mimo to jest wokół tego? Wiem, że ten przykład jest wymyślony, ale mam aplikację, w której bardzo przydatne byłoby przeciążenie operatora, ponieważ klasa, dla której zdefiniowałem operatora, może pojawić się po prawej stronie operatora. Czy jest to możliwe w python?

questionAnswers(2)

yourAnswerToTheQuestion