Comparação de Objetos
Nesta seção, exploraremos os métodos mágicos usados para comparação de objetos em Python. Esses métodos permitem que você defina uma lógica de comparação personalizada para objetos da sua classe.
__eq__
O método __eq__ é usado para determinar se dois objetos são iguais. Ele é chamado pelo operador ==.
## ... (código anterior em person.py)
def __eq__(self, other: "Person") -> bool:
"""
Compara dois objetos Person para igualdade.
:param other: O outro objeto Person para comparar.
:return: True se ambos os objetos tiverem o mesmo nome e idade, False caso contrário.
"""
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False
__ne__
O método __ne__ é usado para determinar se dois objetos não são iguais. Ele é chamado pelo operador !=.
## ... (código anterior em person.py)
def __ne__(self, other: "Person") -> bool:
"""
Compara dois objetos Person para desigualdade.
:param other: O outro objeto Person para comparar.
:return: True se os objetos tiverem nomes ou idades diferentes, False caso contrário.
"""
return not self.__eq__(other)
__lt__
O método __lt__ é usado para determinar se um objeto é menor que outro. Ele é chamado pelo operador <.
## ... (código anterior em person.py)
def __lt__(self, other: "Person") -> bool:
"""
Compara dois objetos Person para ver se um é menor que o outro com base na idade.
:param other: O outro objeto Person para comparar.
:return: True se a idade do objeto atual for menor que a idade do outro objeto, False caso contrário.
"""
if isinstance(other, Person):
return self.age < other.age
return NotImplemented
__le__
O método __le__ é usado para determinar se um objeto é menor ou igual a outro. Ele é chamado pelo operador <=.
## ... (código anterior em person.py)
def __le__(self, other: "Person") -> bool:
"""
Compara dois objetos Person para ver se um é menor ou igual ao outro com base na idade.
:param other: O outro objeto Person para comparar.
:return: True se a idade do objeto atual for menor ou igual à idade do outro objeto, False caso contrário.
"""
if isinstance(other, Person):
return self.age <= other.age
return NotImplemented
__gt__
O método __gt__ é usado para determinar se um objeto é maior que outro. Ele é chamado pelo operador >.
## ... (código anterior em person.py)
def __gt__(self, other: "Person") -> bool:
"""
Compara dois objetos Person para ver se um é maior que o outro com base na idade.
:param other: O outro objeto Person para comparar.
:return: True se a idade do objeto atual for maior que a idade do outro objeto, False caso contrário.
"""
if isinstance(other, Person):
return self.age > other.age
return NotImplemented
__ge__
O método __ge__ é usado para determinar se um objeto é maior ou igual a outro. Ele é chamado pelo operador >=.
## ... (código anterior em person.py)
def __ge__(self, other: "Person") -> bool:
"""
Compara dois objetos Person para ver se um é maior ou igual ao outro com base na idade.
:param other: O outro objeto Person para comparar.
:return: True se a idade do objeto atual for maior ou igual à idade do outro objeto, False caso contrário.
"""
if isinstance(other, Person):
return self.age >= other.age
return NotImplemented
Exemplo: Usando os Métodos Mágicos de Comparação de Objetos
Agora que definimos os métodos mágicos de comparação de objetos para nossa classe Person, vamos ver como eles funcionam em compare_example.py:
from person import Person
## Cria dois objetos Person
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)
## Usa os métodos __eq__ e __ne__
print(p1 == p2) ## Output: False
print(p1 != p2) ## Output: True
## Usa os métodos __lt__, __le__, __gt__ e __ge__
print(p1 < p2) ## Output: True
print(p1 <= p2) ## Output: True
print(p1 > p2) ## Output: False
print(p1 >= p2) ## Output: False
Em seguida, digite o seguinte comando no terminal para executar o script.
python compare_example.py