Python实现整数与实例的双向相乘

5 投票
1 回答
2352 浏览
提问于 2025-04-17 06:49

好的,我正在创建一个向量类(就是数学里的向量,比如说 [1,3]),我想让这个向量类的实例可以和一个整数相乘。首先,我实现了 __mul__ 方法,这样做是可以的,效果也不错。但是,这并没有完全解决我的问题。

a = Vector(4,3)  # Creates a vector, [4,3]
a*4     # This works fine, and prints [16,12]
4*a     # This, however, creates a TypeError (Unsupported operans type(s)).

现在,这样是可以用的,但如果能让它双向工作就更简单了。有没有办法在向量类里做到这一点呢?

1 个回答

11

你的 Vector 类可以提供一个叫做 __rmul__() 的方法,这个方法叫做 反向乘法。它的作用是在左边的操作数不支持乘法时,用来实现乘法运算。

撰写回答