Python以两种方式将int乘以实例

Mar*_*aTh 4 python operator-overloading

好的,所以我正在创建一个Vector类(数学向量,如[1,3]),我想将一个Vector实例与一个int相乘.首先,我实现了该__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)).
Run Code Online (Sandbox Code Playgroud)

现在,这是可用的,但它可以更容易两种方式工作.有没有办法在Vector类中执行此操作?

Wil*_*ill 8

您的Vector类可以提供反射的乘法方法,这是在左侧操作数不支持操作时用于实现乘法的方法.__rmul__()