Überladen des Operators in Python mit dem Objekt auf der rechten Seite des Operators
Ich habe kürzlich etwas über das Überladen von Operatoren in Python gelernt und möchte wissen, ob Folgendes möglich ist.
Betrachten Sie die folgende hypothetische / erfundene Klasse.
<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>
Ich weiß, dass ich auf die oben beschriebene Weise solche Dinge tun kann
<code>n1 = My_Num(1) n2 = My_Num(2) n3 = 3 print n1 + n2 print n1 + n3 </code>
und diese funktionieren wie erwartet. Ich weiß auch, dass ich so, wie es derzeit geschrieben ist, das nicht kann
<code>n1 = My_Num(1) n2 = 2 print 2 + n1 </code>
Gibt es sowieso darum herum? Ich weiß, dass dieses Beispiel erfunden ist, aber ich habe eine Anwendung, in der es sehr nützlich wäre, wenn beim Überladen eines Operators die Klasse, für die ich den Operator definiere, auf der rechten Seite des Operators erscheinen könnte. Ist das in Python möglich?