我写了一个类来表示 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
但这需要重新定义我想与用户定义的类一起使用的每个函数。
有没有办法让内置函数正确处理这个问题?