Boa tarde, fiz esse código que opera números complexos usando Python, estou começando a usar POO e surgiu uma dúvida: até a parte da soma ele calcula e imprime tudo corretamente, mas quando chega na parte da multiplicação os valores de c1.real e c1.imag estão mudados. Ao invés de continuarem com os valores 2 e 3, eles passam a ser o resultado calculado na soma, 6 e 8, isso faz com que a multiplicação dê -16 + 62i ao invés de -7 + 22i. Colocar (c1.real, c1.imag) = (2, 3) antes de calcular a multiplicação foi a solução que encontrei, mas não entendo porque os valores dessas duas variáveis foram trocados pelos de soma. Como consertar isso sem ser pela gambiarra que fiz? Obrigada.
class Complexo:
def __init__(self, a, b):
self.real = a
self.imag = b
print(self)
def soma(self, a, b, c, d):
self.real = a+c
self.imag = b+d
return (self)
def mult(self, a, b, c, d):
self.real = ((a*c) - (b*d))
self.imag = ((a*d) + (b*c))
return (self)
def __str__(self):
s = "%2.f + %2.fi"%(self.real, self.imag)
return s
print ("Complexo 1 = ", end="")
c1 = Complexo(2, 3)
print ("Complexo 2 = ", end="")
c2 = Complexo(4, 5)
print ("Soma =", c1.soma(c1.real, c1.imag, c2.real, c2.imag))
#(c1.real, c1.imag) = (2, 3)
print ("Multiplicação =", c1.mult(c1.real, c1.imag, c2.real, c2.imag))