Rodegast
то умножение на число является частью объекта numpy.ndarray
Так это обычная операция. Numpy - модуль для математической работы с числами и векторами, а для вектора умножение на число - обычная операция, которая вводится чуть ли не первой при определении вектора и операций с ним.
Но вот для комплесного числа умножение на вектор - не обычная операция, а специфическая, поэтому она выносится в калькулятор, которых может быть множество. Одни калькуляторы могут одно считать, другие - другое. Ты даже можешь ввести калькулятор над каким-нибудь полем и считать через него только в пределах этого поля. Там и операции соответствующие. Но зачем загонять все эти разновидности вычислений в одно классическое комплексное число?
Вот смотри
>>> c = 1+2j
>>> dir(c)
['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', 'conjugate', 'imag', 'real']
>>>
Видишь, какие операции определены?
+
-
*
/
abs() - модуль
pow() - степень
А где нибудь видишь ужножение на список?
>>> c * [1, 2, 3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'complex'
>>>
Вот я в калькулятор спокойно могу добавить такое умножение (по аналогии с вектором в numpy), но в самом комплексном числе такой операции делать нечего. Поэтому они и разделены. Он же сегодня говорит, что ему нужны стандартные операции над комплексными числами, а завтра ему препод скажет “давай ещё какие-нибудь” и придётся делать этот калькулятор всё равно. В питоне же для этого даже отдельный модуль есть - cmath. Ты спрашивал, где в питоне калькулятор, вот в этом cmath'е этот калькулятор, весь cmath - это такой один большой калькулятор. И то там не всё есть, что можно делать. Но для этого и делают отдельные сторонние модули со всеми подробностями.
FishHook
Во-первых, не в объект, а в класс. Во-вторых она добавляется в класс в целях обеспечения инкапсуляции приватных атрибутов класса.
От добавления в класс зависит только то, что будет потом в экземпляре класса. Мы же не добавляем в класс просто ради добавления в класс. Мы хотим видеть это в объекте.
FishHook
Тебе придется только вручную передавать ссылку на объект, что по сути есть дело вкуса.
Статический метод можно вынести из класса и вообще без всякого объекта обходиться. А нестатический - да, требует наличия объекта. А зачем нам объект? Нам объект не нужен. str.maketrans() не использует строку, у которой вызывается, и мог бы быть вообще отдельно в модуле каком-нибудь, но его занесли в класс ради удобства (ради группировки).
FishHook
Я так понимаю, ваш срач вышел за рамки питона и полемика развернулась вокруг принципов ООП.
Сейчас он (ТС) спросит, как по формуле Муавра степень посчитать. А пока он сам пытается это сделать, можно и поговорить. :)