Metodi Aritmetici

Aggiungiamo alla nostra classe Fraction metodi aritmetici.

Ricordiamoci che per addizionare due frazioni, dobbiamo renderle con lo stesso denominatore. Il metodo più semplice è moltiplicare ciascun denominatore per l’altro. Per cui:

a/b + c/d = (ad + cb)/bd

Il nostro metodo add prende una Fraction come parametro e ritorna un nuova frazione che rappresenta la somma tra self e il parametro. In particolare applica l’equazione sopra e usa un metodo simile a simplify per ridurre la frazione ottenuta.

def add(self,otherfraction):

    newnum = self.num*otherfraction.den + self.den*otherfraction.num
    newden = self.den * otherfraction.den

    common = gcd(newnum,newden)

    return Fraction(newnum//common,newden//common)



(fractions_add1)

Se scriviamo il metodo add in modo opportuno, possiamo effettuare la somma invece che invocando il metodo add, usando l’operatore “+”. Per fare ciò basta dichiarare il metodo come __add__. Il corpo del metodo è lo stesso.

def __add__(self, otherfraction):

    newnum = self.num*otherfraction.den + self.den*otherfraction.num
    newden = self.den * otherfraction.den

    common = gcd(newnum, newden)

    return Fraction(newnum // common, newden // common)

Adesso, possiamo usare il simbolo + per fare addizioni tra frazioni come siamo abituati a fare con gli altri dati numerici.

f1 = Fraction(1, 2)
f2 = Fraction(1, 4)

f3 = f1 + f2    # calls the __add__ method of f1
print(f3)
Next Section - Esercizi