【发布时间】:2011-10-31 01:29:17
【问题描述】:
我在 Python 中编写了一个表示向量的类(作为练习),但在扩展内置运算符时遇到了问题。
我为向量类定义了一个__mul__ 方法。问题是在表达式 x * y 中,解释器调用 x 的 __mul__ 方法,而不是 y。
所以 vector(1, 2, 3) * 2 返回一个向量 就像它应该的那样;但是2 * vector(1, 2, 3) 创建了一个 TypeError,因为内置的 int 类不支持与我的用户定义的向量相乘。
我可以通过简单地编写一个新的乘法函数来解决这个问题
def multiply(a, b):
try:
return a * b
except TypeError:
return b * a
但这需要重新定义我想与我的用户定义类一起使用的每个函数。
有没有办法让内置函数正确处理这个问题?
【问题讨论】: