46 votes

Python : remplacement de la multiplication

J'ai donc une classe personnalisée qui a une fonction __mul__ qui fonctionne avec des ints. Cependant, dans mon programme (dans les bibliothèques), il est appelé dans l'autre sens, c'est-à-dire 2 * xx est de ma classe. Existe-t-il un moyen de lui faire utiliser ma fonction __mul__ pour cela ?

50voto

Karl Knechtel Points 24349

Ajoutez simplement ce qui suit à la définition de la classe et vous devriez être prêt à partir :

 __rmul__ = __mul__

36voto

Cat Plus Plus Points 53385

Implémentez également __rmul__ .

 class Foo(object):
    def __mul__(self, other):
        print '__mul__'
        return other
    def __rmul__(self, other):
        print '__rmul__'
        return other

x = Foo()
2 * x # __rmul__
x * 2 # __mul__

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X