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)
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)