B.4. Comparar fracciones Python

Supongamos que tenemos dos objetos Fracción, a y b, y evaluamos a == b. La implementación por defecto de == comprueba la igualdad super¯cial, por lo que solo devuelve true si a y b son el mismo objeto.
Queremos mas bien devolver verdadero si a y b tienen el mismo valor |eso es,igualdad en profundidad.
Hemos de enseñar a las fracciones como compararse entre si. Como vimos en la Sección 15.4, podemos sobrecargar todos los operadores de comparación de una vez proporcionando un método cmp .
Por convenio, el método cmp devuelve un numero negativo si self es menor que otro, zero si son lo mismo, y un numero positivo si self es mayor que otro.
La forma mas simple de comparar dos fracciones es la multiplicación cruzada.
Si a=b > c=d, entonces ad > bc. Con esto en mente, aquí esta el código para cmp :
   1: class Fraccion:
   2: ...
   3:     def __cmp__(self, otro):
   4:         dif = (self.numerador * otro.denominador -
   5:             otro.numerador * self.denominador)
   6:         return dif


Si self es mayor que otro, entonces dif sera positivo. Si otro es mayor, entonces dif sera negativo. Si son iguales, dif es cero.

Comentarios

Entradas populares