Ho una classe Vec3D (vedi http://pastebin.com/9Y7YbCZq)Override + operatore in Python per float + obj
Attualmente, mi permetto Vec3D (1,0,0) + 1.2 ma mi chiedo come devo procedere al sovraccarico l'operatore + in modo tale che ottengo il seguente output:
>>> 3.3 + Vec3D(1,0,0)
[4.3, 3.3 , 3.3]
codice non è necessario, ma solo un accenno in quale direzione dovrei guardare. Qualcosa generale sarà più utile di una specifica implementazione, come ho bisogno di attuare la stessa cosa per la moltiplicazione, sottrazione ecc
Non ho visto "Qualcosa di generale sarà più utile di un'implementazione specifica in quanto ho bisogno di implementare la stessa cosa per la moltiplicazione, la sottrazione, ecc." parte ma il collegamento nella mia risposta ti porterà alla [lista dei metodi magici usati per emulare un tipo numerico] (http://docs.python.org/reference/datamodel.html#emulating-numeric-types). – agf
Va bene, ho smesso di leggere dopo "Stai cercando __radd__" e ho fatto clic sul link :) Tuttavia, il tuo codice lo ha reso molto più chiaro, quindi grazie –
Se hai un __add __() personalizzato per la tua classe, quindi subito dopo la sua definizione è possibile includere solo una riga '__radd__ = __add__'. Questo funziona perché radd scambia l'ordine degli argomenti per te. –