我有一个自定义类,我想实现使用矩阵乘法@
运算符的可能性。
在我的班级中定义__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
。这对我来说有点不协调。