Comparaison d'objets
Dans cette section, nous allons explorer les méthodes magiques utilisées pour comparer des objets en Python. Ces méthodes vous permettent de définir une logique de comparaison personnalisée pour les objets de votre classe.
__eq__
La méthode __eq__ est utilisée pour déterminer si deux objets sont égaux. Elle est appelée par l'opérateur ==.
#... (code précédent dans person.py)
def __eq__(self, other: "Person") -> bool:
"""
Compare deux objets Person pour égalité.
:param other: L'autre objet Person à comparer.
:return: True si les deux objets ont le même nom et le même âge, False sinon.
"""
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False
__ne__
La méthode __ne__ est utilisée pour déterminer si deux objets ne sont pas égaux. Elle est appelée par l'opérateur !=.
#... (code précédent dans person.py)
def __ne__(self, other: "Person") -> bool:
"""
Compare deux objets Person pour inégalité.
:param other: L'autre objet Person à comparer.
:return: True si les objets ont des noms ou des âges différents, False sinon.
"""
return not self.__eq__(other)
__lt__
La méthode __lt__ est utilisée pour déterminer si un objet est inférieur à un autre. Elle est appelée par l'opérateur <.
#... (code précédent dans person.py)
def __lt__(self, other: "Person") -> bool:
"""
Compare deux objets Person pour voir si l'un est inférieur à l'autre en fonction de l'âge.
:param other: L'autre objet Person à comparer.
:return: True si l'âge de l'objet actuel est inférieur à l'âge de l'autre objet, False sinon.
"""
if isinstance(other, Person):
return self.age < other.age
return NotImplemented
__le__
La méthode __le__ est utilisée pour déterminer si un objet est inférieur ou égal à un autre. Elle est appelée par l'opérateur <=.
#... (code précédent dans person.py)
def __le__(self, other: "Person") -> bool:
"""
Compare deux objets Person pour voir si l'un est inférieur ou égal à l'autre en fonction de l'âge.
:param other: L'autre objet Person à comparer.
:return: True si l'âge de l'objet actuel est inférieur ou égal à l'âge de l'autre objet, False sinon.
"""
if isinstance(other, Person):
return self.age <= other.age
return NotImplemented
__gt__
La méthode __gt__ est utilisée pour déterminer si un objet est supérieur à un autre. Elle est appelée par l'opérateur >.
#... (code précédent dans person.py)
def __gt__(self, other: "Person") -> bool:
"""
Compare deux objets Person pour voir si l'un est supérieur à l'autre en fonction de l'âge.
:param other: L'autre objet Person à comparer.
:return: True si l'âge de l'objet actuel est supérieur à l'âge de l'autre objet, False sinon.
"""
if isinstance(other, Person):
return self.age > other.age
return NotImplemented
__ge__
La méthode __ge__ est utilisée pour déterminer si un objet est supérieur ou égal à un autre. Elle est appelée par l'opérateur >=.
#... (code précédent dans person.py)
def __ge__(self, other: "Person") -> bool:
"""
Compare deux objets Person pour voir si l'un est supérieur ou égal à l'autre en fonction de l'âge.
:param other: L'autre objet Person à comparer.
:return: True si l'âge de l'objet actuel est supérieur ou égal à l'âge de l'autre objet, False sinon.
"""
if isinstance(other, Person):
return self.age >= other.age
return NotImplemented
Exemple : Utilisation des méthodes magiques de comparaison d'objets
Maintenant que nous avons défini les méthodes magiques de comparaison d'objets pour notre classe Person, voyons comment elles fonctionnent dans compare_example.py :
from person import Person
## Crée deux objets Person
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)
## Utilise les méthodes __eq__ et __ne__
print(p1 == p2) ## Sortie : False
print(p1!= p2) ## Sortie : True
## Utilise les méthodes __lt__, __le__, __gt__ et __ge__
print(p1 < p2) ## Sortie : True
print(p1 <= p2) ## Sortie : True
print(p1 > p2) ## Sortie : False
print(p1 >= p2) ## Sortie : False
Ensuite, tapez la commande suivante dans le terminal pour exécuter le script.
python compare_example.py