我们如何重载@
运算符?
我知道我们可以通过实现+
,*
等方法来重载__add__
,__mul__
等运算符,但是等效于什么@
?
答案 0 :(得分:1)
在Python 3.5中引入了@
运算符,以促进矩阵乘法(请参见PEP 465 - A dedicated infix operator for matrix multiplication)。
如PEP定义所示,@
运算符可以在最初引入执行{strong> mat rix mul 时使用__matmul__
重载。重复。
class foo:
def __init__(self, A):
self.A = A
def __matmul___(self, B):
# some operations on self.A and B
return ...
与其他任何运算符一样,您可以使用@=
重载其本地版本__imatmul__
,以及使用__rmatmul__
重载其反射版本。