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 :
Si mon int est à gauche, il ne sait plus calculer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !
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 :Merci de vos idées !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 }
Partager