У меня есть простой класс, который помогает с математическими операциями над векторами (т.е. списками чисел). Мой Vector может быть умножен на другие экземпляры Vector или скаляр (float или int).
В других, более строго типизированных языках я бы создал метод для умножения двух Vector и отдельного метода для умножения a Vector на и int/float. Я все еще довольно новичок в Python и не знаю, как это реализовать. Единственный способ, которым я могу это сделать, - переопределить __mul__() и проверить входящий параметр:
class Vector(object):
...
def __mul__(self, rhs):
if isinstance(rhs, Vector):
...
if isinstance(rhs, int) or isinstance(rhs, float):
...
Даже если я это сделаю, мне пришлось бы умножить Vector на такой скаляр:
v = Vector([1,2,3])
result = v * 7
Что делать, если я хотел бы изменить порядок операндов при умножении?
result = 7 * v
Каков правильный способ сделать это в Python?