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?