Comparación de objetos
En esta sección, exploraremos los métodos mágicos utilizados para la comparación de objetos en Python. Estos métodos te permiten definir una lógica de comparación personalizada para los objetos de tu clase.
__eq__
El método __eq__
se utiliza para determinar si dos objetos son iguales. Es llamado por el operador ==
.
#... (código anterior en person.py)
def __eq__(self, other: "Person") -> bool:
"""
Compara dos objetos Person para ver si son iguales.
:param other: El otro objeto Person con el que se compara.
:return: True si ambos objetos tienen el mismo nombre y edad, False en caso contrario.
"""
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False
__ne__
El método __ne__
se utiliza para determinar si dos objetos no son iguales. Es llamado por el operador !=
.
#... (código anterior en person.py)
def __ne__(self, other: "Person") -> bool:
"""
Compara dos objetos Person para ver si son diferentes.
:param other: El otro objeto Person con el que se compara.
:return: True si los objetos tienen nombres o edades diferentes, False en caso contrario.
"""
return not self.__eq__(other)
__lt__
El método __lt__
se utiliza para determinar si un objeto es menor que otro. Es llamado por el operador <
.
#... (código anterior en person.py)
def __lt__(self, other: "Person") -> bool:
"""
Compara dos objetos Person para ver si uno es menor que el otro en base a la edad.
:param other: El otro objeto Person con el que se compara.
:return: True si la edad del objeto actual es menor que la edad del otro objeto, False en caso contrario.
"""
if isinstance(other, Person):
return self.age < other.age
return NotImplemented
__le__
El método __le__
se utiliza para determinar si un objeto es menor o igual que otro. Es llamado por el operador <=
.
#... (código anterior en person.py)
def __le__(self, other: "Person") -> bool:
"""
Compara dos objetos Person para ver si uno es menor o igual que el otro en base a la edad.
:param other: El otro objeto Person con el que se compara.
:return: True si la edad del objeto actual es menor o igual que la edad del otro objeto, False en caso contrario.
"""
if isinstance(other, Person):
return self.age <= other.age
return NotImplemented
__gt__
El método __gt__
se utiliza para determinar si un objeto es mayor que otro. Es llamado por el operador >
.
#... (código anterior en person.py)
def __gt__(self, other: "Person") -> bool:
"""
Compara dos objetos Person para ver si uno es mayor que el otro en base a la edad.
:param other: El otro objeto Person con el que se compara.
:return: True si la edad del objeto actual es mayor que la edad del otro objeto, False en caso contrario.
"""
if isinstance(other, Person):
return self.age > other.age
return NotImplemented
__ge__
El método __ge__
se utiliza para determinar si un objeto es mayor o igual que otro. Es llamado por el operador >=
.
#... (código anterior en person.py)
def __ge__(self, other: "Person") -> bool:
"""
Compara dos objetos Person para ver si uno es mayor o igual que el otro en base a la edad.
:param other: El otro objeto Person con el que se compara.
:return: True si la edad del objeto actual es mayor o igual que la edad del otro objeto, False en caso contrario.
"""
if isinstance(other, Person):
return self.age >= other.age
return NotImplemented
Ejemplo: Uso de los métodos mágicos de comparación de objetos
Ahora que hemos definido los métodos mágicos de comparación de objetos para nuestra clase Person
, veamos cómo funcionan en compare_example.py
:
from person import Person
## Crea dos objetos Person
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)
## Utiliza los métodos __eq__ y __ne__
print(p1 == p2) ## Salida: False
print(p1!= p2) ## Salida: True
## Utiliza los métodos __lt__, __le__, __gt__ y __ge__
print(p1 < p2) ## Salida: True
print(p1 <= p2) ## Salida: True
print(p1 > p2) ## Salida: False
print(p1 >= p2) ## Salida: False
Luego, escribe el siguiente comando en la terminal para ejecutar el script.
python compare_example.py