Bonjour.
Pour un vecteur, l'opérateur * peut concerner un produit matriciel (v1 * v2) ou un produit scalaire (x * v1 ou v1 * x).
Pour un vecteur 2d, j'arrive à coder l'un ou l'autre des produits mais pas les 2 en même temps :
Ici, le produit scalaire fonctionne jusqu'à ce que je décommente le produit matriciel. Idem, le produit matriciel fonctionne si je commente les 2 produits scalaires.
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
16 class Vector: def __init__(self, x=0, y=0): self.x = x self.y = y def __repr__(self): return "Vector(" + str(self.x) + "," + str(self.y) + ")" def __mul__(self, scalar): return Vector(scalar * self.x,scalar * self.y) def __rmul__(self, scalar): return self * scalar # def __mul__(self, other): # return self.x * other.x + self.y * other.y
Est-il possible de surcharger * pour que les 3 opérations fonctionnent ?
Partager