class fraccion(object): # Nombre de la clase y clase base def __init__(self, n=0,m=1): # Constructor sobrecargado self.numerador = n self.denominador = m def __add__(self,x): # Defino la suma if type(x) != type(fraccion()): # Si x no es fraccional x = fraccion(x) # lo transformo aux = fraccion() aux.numerador = self.numerador * x.denominador + \ self.denominador * x.numerador aux.denominador = self.denominador * x.denominador return aux __radd__ = __add__ # Suma x + self - no puedo sobrecargar # las clases base que ya existen def __repr__(self): return "%s / %s" % (self.numerador, self.denominador) a = fraccion(1,3) b = fraccion(1,2) c = 2 print a + b print a + c print c + a d = a + c + b print d