Mi piacerebbe essere in grado di far interagire l'operatore della mia classe con i tipi regolari in un modo che definisco. Diciamo, per esempio, ho:Python: Operatore Sovraccarico di un tipo specifico
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
Questo funziona bene, ma ora se cerco di fare:
print a+2
ottengo un errore poiché un int
non ha un membro nominato x
. Come definisco Mynum
+ int
nella classe? Sembra un lavoro per decoratori o metaclassi, ma sono terribilmente poco familiare con il loro utilizzo. This question sembra simile, ma non del tutto identico.
controllare il tipo o "altro" o presenza di attributo 'x'. – SilentGhost
non dimenticarti di fare: '__radd__' =' __add__' anche (anche se non risolve il tuo problema) – jcao219