Gli Oggetti sono Mutabili¶
Possiamo cambiare lo stato di un oggetto facendo un assegnamento alla sue variabili di istanza, ovvero i suoi attributi.
Per esempio, potremmo cambiare il numeratore di una frazione assegnando un nuovo valore a self.num
. Allo stesso modo possiamo modificare self.den
.
Per esempio, ciò ha molto senso quando vogliamo ridurre ai minimi termini, dividendo il numeratore e il denominatore per un divisore comune. Se tale divisore è l’MCD, otteniamo la frazione ridotta ai minimi termini, che non può essere ulteriormente ridotta.
L’MCD può essere trovato come segue, applicando l’algoritmo di Euclide.
(fractions_gcd)
Usando tale funzione, possiamo scrivere la nostra funzione di riduzione simplify
, chiedendo alla frazione di ridursi ai minimi termini, come segue.
(fractions_simplify)
Notiamo che la funzione gcd
non è un metodo della classe, ma è solo usato dalla classe. In questo senso si tratta di una funzione ausiliaria. Inoltre il metodo simplify
non ritorna nulla, in quanto il suo unico obiettivo è quello di modificare lo stato dell’oggetto. Per questo motivo, metodi di questo tipo sono chiamati mutator perché cambiano lo stato interno dell’oggetto.