Я бы хотел написать что-то подобное на python:
a = (1, 2)
b = (3, 4)
c = a + b # c would be (4, 6)
d = 3 * b # d would be (9, 12)
Я понимаю, что вы можете перегружать операторы для работы с пользовательскими классами, но есть ли способ перегрузить операторы для работы с парами?
Конечно, такие решения, как
c = tuple([x+y for x, y in zip(a, b)])
работают, но, не говоря уже о производительности, они не так хороши, как перегрузка оператора +
.
Конечно, можно определить функции add
и mul
, такие как
def add((x1, y1), (x2, y2)):
return (x1 + x2, y1 + y2)
def mul(a, (x, y)):
return (a * x, a * y)
но все же иметь возможность писать q * b + r
вместо add(times(q, b), r)
было бы лучше.
Идеи
РЕДАКТИРОВАТЬ : С другой стороны, я понимаю, что, поскольку +
в настоящее время отображается на объединение кортежей, было бы неразумно переопределять его, даже если это возможно. Вопрос по-прежнему остается для -
, например =)