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 :
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
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.
Est-il possible de surcharger * pour que les 3 opérations fonctionnent ?