Я создаю класс в Python, который я хочу использовать с моими собственными арифметическими алгоритмами.Чтобы работать с его экземплярами, я переопределил все его операторные функции, такие как __add__, __mul__, __truediv__ и т. Д.
Например, скажем, это complex class:
class complex:
def __init__(self,module,phase):
self.module = module
self.phase = phase
def __mul__(self,other):
return complex(self.module + other.module, self.phase + other.phase)
def __truediv__(self,other):
return complex(self.module / other.module, self.phase - other.phase)
Я хочу иметь возможность записывать выражения как:
from math import pi
a = complex(1,0.5*pi)
b = 1/a
, но если я это сделаю, я получу следующую ошибку:
неподдерживаемый тип операнда (s) for /: 'int' и 'complex'
Хотя я бы хотел получить результат
b = complex(1,0) / a
Что мне нужно переопределить, чтобы он работал?
РЕДАКТИРОВАТЬ:
Благодаря комментарию hiro , я только что открыл для себя новый мир Эмуляция числовых типов