У меня есть простой класс, который помогает с математическими операциями над векторами (т.е. списками чисел). Мой 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?