Surcharge d'opérateur
G@ndjalf
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
dsy73 Messages postés 9252 Date d'inscription Statut Contributeur Dernière intervention -
dsy73 Messages postés 9252 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis actuellement entrain de coder une classe de vecteurs et je rencontre un problème. J'aimerais surcharger l'opérateur * afin qu'il me permette à la fois un produit vectoriel et une multiplication par un scalaire. Mais mon code ne marche pas et je ne trouve pas l'erreur :
def __mul__(v,self):
if isinstance(v, vect3):
return vect3([self[1]*v[2] - self[2]*v[1], self[2]*v[0] - self[0]*v[2], self[0]*v[1] - self[1]*v[0]])
else:
return vect3([v*self[0], v*self[1], v*self[2]])
Lorsque je veux calculer 3*v où v = vect3([1,2,3]) par exemple j'obtiens l'erreur : "TypeError: unsupported operand type(s) for *: 'int' and 'vect3'"
Et pour v*3 : "TypeError: 'int' object has no attribute '__getitem__'" ce qui parait normal.
Toute aide serait la bienvenue :) Merci.
Je suis actuellement entrain de coder une classe de vecteurs et je rencontre un problème. J'aimerais surcharger l'opérateur * afin qu'il me permette à la fois un produit vectoriel et une multiplication par un scalaire. Mais mon code ne marche pas et je ne trouve pas l'erreur :
def __mul__(v,self):
if isinstance(v, vect3):
return vect3([self[1]*v[2] - self[2]*v[1], self[2]*v[0] - self[0]*v[2], self[0]*v[1] - self[1]*v[0]])
else:
return vect3([v*self[0], v*self[1], v*self[2]])
Lorsque je veux calculer 3*v où v = vect3([1,2,3]) par exemple j'obtiens l'erreur : "TypeError: unsupported operand type(s) for *: 'int' and 'vect3'"
Et pour v*3 : "TypeError: 'int' object has no attribute '__getitem__'" ce qui parait normal.
Toute aide serait la bienvenue :) Merci.