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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage