Pues eso, probando las sobrecargas de operadores con Python, la division no me funciona. Al menos, como si lo hacen, la suma, resta y multiplicacion.
Antes de postear el tema le he dado mil vueltas. Pero no encuentro porque no funciona.
El tipico codigo de clase Punto:
Código Python:
Ver original
class Punto: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return 'x: ' + str(self.x) + ' y: ' + str(self.y) def __add__(self, otro): # metodo suma return Punto(self.x + otro.x, self.y + otro.y) def __sub__(self, otro): # metodo resta return Punto(self.x - otro.x, self.y - otro.y) def __mul__(self, otro): # metodo multiplicacion return Punto(self.x * otro.x, self.y * otro.y) def __div__(self, otro): # metodo division return Punto(self.x / otro.x, self.y / otro.y)
Instanciamos:
Código Python:
Ver original
p1 = Punto(20, 10) p2 = Punto(5, 4)
Mostramos por pantalla:
Código Python:
Ver original
# suma __add__ print('Suma:', p1 + p2) # resta __sub__ print('Resta:', p1 - p2) # mutiplicacion __mul__ print('Multiplicacion:',p1 * p2) # division __div__ print('Division:', p1 / p2)
Y cuando llega a la division nos arroja la excepcion:
Suma: x: 25 y: 14
Resta: x: 15 y: 6
Multiplicacion: x: 100 y: 40
Traceback (most recent call last):
File "C:\sobrecargaOperadores.py", line 41, in <module>
print('Division:', p1 / p2)
builtins.TypeError: unsupported operand type(s) for /: 'Punto' and 'Punto'
Pero si hacemos lo siguiente si funciona:
Código Python:
Ver original
print(p1.__div__(p2))
x: 4.0 y: 2.5
¿Donde esta el error?