Surcharge d'opérateur

Fermé
G@ndjalf Messages postés 1 Date d'inscription vendredi 25 décembre 2015 Statut Membre Dernière intervention 25 décembre 2015 - 25 déc. 2015 à 14:21
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 - 25 déc. 2015 à 18:22
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.

1 réponse

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482
25 déc. 2015 à 18:22
Salut
tu devrais mettre ton code complet (la classe) et surtout utiliser le bouton "code" dans l'éditeur de message.
0