__rmatmul__没有按预期工作

时间:2016-10-14 13:17:50

标签: python-3.x numpy operator-overloading

我有一个自定义类,我想实现使用矩阵乘法@运算符的可能性。

在我的班级中定义__rmatmul__方法,如果我有,例如一个实例molecule以下工作:

molecule.__rmatmul__( np.diag([1, 1, -1]))

但以下内容会返回ValueError

np.diag([1, 1, -1]) @ molecule

我不想用class定义的代码来解决这个问题。但如有必要,我会提供。

编辑: 我做了一个小测试,用最小的课程来缩小问题范围:

class minimal:
     def __rmatmul__(self, other):
         return 1

     def __rmul__(self, other):
         return 2

test = minimal()

1 * test

按预期返回2.

np.zeros([3,3]) @ test

现在返回TypeError。这对我来说有点不协调。

0 个答案:

没有答案