Surcharge d'opérateur à gauche
Bonjour,
voici une classe Num qui implémente l'addition sur des entiers.
(code minimaliste juste pour l'exemple)
J'ai surchargé la méthode __add__.
Elle permet de faire des calculs entre Nums et entre Num et int.
Ça marche très bien, sauf dans un cas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| class Num:
def __init__(self,n=0):
self.n = int(n)
def __add__ (self,N):
if not isinstance( N,Num ):
N = Num( N )
return Num( self.n + N.n )
a,b,c = Num( 3 ),Num( 5 ),Num()
c = a+b
b = c+7
a = 9+b # ne marche pas ! |
Si mon int est à gauche, il ne sait plus calculer...
Comment coder ma méthode __add__ pour qu'elle accepte un int à gauche et un Num à droite ?
Pour info, et pour les C++istes, voici le code C++ dont j'aimerais copier le comportement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| struct Num
{
Num ( int n = 0 ) { _n = n ;}
Num operator + ( const Num & N ) const { return Num( _n + N._n ) ;}
friend Num operator + ( int n , const Num & N ) { return Num( n + N._n ) ;} // méthode qui me manque en python
int _n ;
};
void foo ()
{
Num a( 5 ),b( 7 ),c ;
c = a+b ;
a = b+3 ;
b = 5+c ; // ce que je voudrais pouvoir écrire en python
} |
Merci de vos idées !