El módulo Functools en python ayuda a implementar funciones de orden superior. Las funciones de orden superior son funciones dependientes que llaman a otras funciones. Total_ordering proporciona métodos de comparación de clases enriquecidos que ayudan a comparar clases sin definir explícitamente una función para ello. Entonces, ayuda en la redundancia del código.
Los seis métodos de comparación de clases ricas son:
- objeto.__lt__(yo, otro)
- objeto.__le__(yo, otro)
- objeto.__eq__(yo, otro)
- objeto.__ne__(yo, otro)
- objeto.__gt__(yo, otro)
- objeto.__ge__(yo, otro)
Hay 2 condiciones esenciales para implementar estos métodos de comparación:
- Al menos uno de los métodos de comparación debe definirse entre lt(menor que), le(menor o igual que), gt(mayor que) o ge(mayor que o igual que).
- La función eq también debe ser definida.
Ejemplo:
from functools import total_ordering @total_ordering class Students: def __init__(self, cgpa): self.cgpa = cgpa def __lt__(self, other): return self.cgpa<other.cgpa def __eq__(self, other): return self.cgpa == other.cgpa def __le__(self, other): return self.cgpa<= other.cgpa def __ge__(self, other): return self.cgpa>= other.cgpa def __ne__(self, other): return self.cgpa != other.cgpa Arjun = Students(8.6) Ram = Students(7.5) print(Arjun.__lt__(Ram)) print(Arjun.__le__(Ram)) print(Arjun.__gt__(Ram)) print(Arjun.__ge__(Ram)) print(Arjun.__eq__(Ram)) print(Arjun.__ne__(Ram))
Producción
False False True True False True
Nota: Dado que el __gt__
método no está implementado, muestra «No
Ejemplo 2:
from functools import total_ordering @total_ordering class num: def __init__(self, value): self.value = value def __lt__(self, other): return self.value < other.value def __eq__(self, other): # Changing the functionality # of equality operator return self.value != other.value # Driver code print(num(2) < num(3)) print(num(2) > num(3)) print(num(3) == num(3)) print(num(3) == num(5))
Producción:
True False False True
Publicación traducida automáticamente
Artículo escrito por sathiyajith19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA