La surcharge des opérateurs est une technique avancée que nous pouvons utiliser pour rendre les classes comparables et les faire fonctionner avec des opérateurs Python.
Prenons une classe Dog
:
class Dog: # the Dog class def __init__(self, name, age): self.name = name self.age = age
Créons 2 objets pour Dog
:
roger = Dog('Roger', 8) syd = Dog('Syd', 7)
Nous pouvons utiliser la surcharge de l’opérateur pour ajouter un moyen de comparer ces 2 objets, en se basant sur la propriété age
:
class Dog: # the Dog class def __init__(self, name, age): self.name = name self.age = age def __gt__(self, other): return True if self.age > other.age else False
Maintenant, si vous essayez de lancer print(roger > syd)
, vous obtiendrez le résultat True
.
De la même manière que nous avons défini __gt__()
(ce qui signifie plus grand que), nous pouvons définir les méthodes suivantes :
__eq__()
pour vérifier l’égalité__lt__()
pour vérifier si un objet doit être considéré comme inférieur à un autre avec l’opérateur<
__le__()
pour inférieur ou égal (<=
)__ge__()
pour supérieur ou égal (>=
)__ne__()
pour non égal (!=
)
Ensuite, vous avez des méthodes pour interopérer (interoperate) avec des opérations arithmétiques :
__add__()
répond à l'opérateur+
.__sub__()
répondre à l'opérateur-
.__mul__()
répondre à l'opérateur*
.__truediv__()
répondre à l'opérateur/
.__floordiv__()
répondre à l'opérateur//
.__mod__()
répondre à l'opérateur%
.__pow__()
répondre à l'opérateur**
.__rshift__()
répondre à l'opérateur>>
.__lshift__()
répondre à l'opérateur<<
.__et__()
répondre à l'opérateur&
.__or__()
répondre à l'opérateur|
.__xor__()
répondre à l'opérateur^
.
Il y a quelques autres méthodes pour travailler avec d'autres opérateurs, mais vous avez compris l'idée.