Ich möchte in der Lage sein, den Operator meiner Klasse mit regulären Typen in einer Weise interagieren zu lassen, die ich definiere. Sagen wir, zum Beispiel, ich habe:Python: Operator Überladen eines bestimmten Typs
class Mynum(object):
def __init__(self, x):
self.x = x
def __add__(self, other):
return self.x + other.x
a = Mynum(1)
b = Mynum(2)
print a+b
Das funktioniert ganz gut, aber jetzt, wenn ich versuche zu:
print a+2
ich einen Fehler, da ein int
nicht Mitglied x
genannt haben . Wie definiere ich Mynum
+ int
in der Klasse? Das hört sich nach einem Job für Dekorateure oder Metaklassen an, aber ich kenne sie nicht sehr gut. This question scheint ähnlich, aber nicht ganz identisch.
Überprüfen Sie den Typ oder 'andere' oder das Vorhandensein von' x' Attribut. – SilentGhost
nicht vergessen zu tun: '__radd__' =' __add_' auch (auch wenn es nicht Ihr Problem behebt) – jcao219