我希望能够用 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
and 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)
会更好。
Ideas?
EDIT: 顺便说一句,我意识到自从+
目前映射到元组串联,重新定义它可能是不明智的,即使这是可能的。这个问题仍然成立-
例如=)