В настоящее время я реализую свой собственный класс для комплексных чисел, таких как здесь . И благодаря этому посту мне удалось сделать это для разделения между 2 комплексными числами.
Но у меня все еще есть проблема: я понимаю, что 4 / (42i + 4)
и (42i + 4) / 4
не одно и то же, но в моем случае я получу тот же результат. Это потому, что в этом случае программа примет одно число как целое и не сможет разделить целое число на мой сложный объект.
Я понимаю, что мне нужно создать метод __rdiv__, чтобы справиться с этим. Я уже сделал это для других базовых c операций (__add__, __sub__, __mul__), выполнив следующее:
class Complex(object):
def __init__(self, real=0, imag=0):
self.real = real
self.imag = imag
def __add__(self, other):
return Complex(self.real + other.real,
self.imag + other.imag)
def __radd__(self, other):
return self.__add__(other)
def __sub__(self, other):
print(self, other)
return Complex(self.real - other.real,
self.imag - other.imag)
def __rsub__(self, other):
return self.__sub__(other)
def __mul__(self, other):
# print(self, other)
return Complex(self.real*other.real - self.imag*other.imag,
self.imag*other.real + self.real*other.imag)
def __rmul__(self, other):
return self.__mul__(other)
Но я не могу использовать те же логи c с делением. Возможно, математика должна быть другой, но я не могу обдумать это. Может ли кто-нибудь помочь мне в этом? Большое спасибо
Вот мой __div__:
def __div__(self, other):
conjugation = Complex(other.real, -other.imag)
denominatorRes = other * conjugation
denominator = float(denominatorRes.real)
nominator = self * conjugation
try:
return Complex(nominator.real/denominator, nominator.imag/denominator)
except ZeroDivisionError as e:
print e
return None