Je voudrais pouvoir faire interagir l'opérateur de ma classe avec les types réguliers d'une manière que je définis. Disons, par exemple, j'ai:Python: Opérateur Surcharge d'un type spécifique
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
Cela fonctionne très bien, mais maintenant si j'essaie de faire:
print a+2
Je reçois une erreur car une int
ne dispose pas d'un membre nommé x
. Comment définir Mynum
+ int
dans la classe? Cela ressemble à un travail pour les décorateurs ou les métaclasses, mais je suis terriblement peu familier avec leur utilisation. This question semble similaire, mais pas tout à fait identique.
vérifier le type ou l'attribut 'autre' ou présence de' x'. – SilentGhost
ne pas oublier de faire: '__radd__' =' __add__' aussi (même si cela ne résout pas votre problème) – jcao219