Hola de nuevo!
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 originalclass 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 originalp1 = 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:
x: 4.0 y: 2.5
¿Donde esta el error?