web-dev-qa-db-fra.com

Python: remplacement de multiplication

Donc, j'ai une classe personnalisée qui a un __mul__ fonction qui fonctionne avec des nombres entiers. 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 le faire utiliser mon __mul__ fonction pour cela?

35
Colin DeClue

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

__rmul__ = __mul__
39
Karl Knechtel

Mettre en place __rmul__ ainsi que.

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__
26
Cat Plus Plus