Funciones de Python – total_ordering()

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *