я написал класс для представления векторов в Python (в качестве упражнения), и у меня возникли проблемы с расширением встроенных операторов.
Я определил __ mul __
для класса векторов. Проблема в том, что в выражении x * y
интерпретатор вызывает метод __ mul __
для x, а не y.
Итак, vector (1, 2, 3) * 2
возвращает вектор <2, 4, 6>, как и должно; но 2 * vector (1, 2, 3)
создает TypeError, потому что встроенный класс int не поддерживает умножение на мои определяемые пользователем векторы.
Я мог бы решить эту проблему, просто написав новая функция умножения
def multiply(a, b):
try:
return a * b
except TypeError:
return b * a
, но для этого потребуется переопределить каждую функцию, которую я хочу использовать с моими пользовательскими классами.
Есть ли способ заставить встроенную функцию обрабатывать это правильно?