buongiorno.
In questo esempio di codice, lo scopo è implementare un tipo di dato astratto, il tipo frazione. L'utilità è principalmente didattica. Tutto apparentemente funziona, tranne nella riga in cui sommo 8/3° con 11/47°. Il ritorno che ottengo è None. Si tratta di un errore semantico che non riesco ad individuare. Ecco il codice. # Dall'appendice B di pensare da informatico. class Frazione: """Classe che implementa il tipo di dato a Frazione.""" def __init__(self, Numeratore=1, Denominatore=1): mcd = MCD(Numeratore, Denominatore) self.Numeratore = Numeratore / mcd self.Denominatore = Denominatore / mcd def __str__(self): return "%d/%d" % (self.Numeratore, self.Denominatore) def __mul__(self, Altro): if type(Altro) == type(5): Altro = Frazione(Altro) __rmul__ = self.__mul__ return Frazione(self.Numeratore * Altro.Numeratore, self.Denominatore * Altro.Denominatore) def __add__(self, Altro): __radd__ = self.__add__ if type(Altro) == type(5): Altro = Frazione(Altro) return Frazione(self.Numeratore * Altro.Denominatore + self.Denominatore * Altro.Numeratore) def MCD(m,n): """Massimo Comun Divisore""" if m % n == 0: return n else: return MCD(n, m%n) # Il seguente codice puo' essere rimosso in quanto serve solo come test. print "Stampo una frazione 14 / 32." print Frazione(14,32) print "Sommo 8/3 e 11/47" print Frazione(8,3)+Frazione(11, 47) print "Moltiplico 2/7 * 9/2" print Frazione(2,7)*Frazione(9,2) _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python