如何在python中重载“ @”运算符?

时间:2019-05-05 09:40:15

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

我们如何重载@运算符?

我知道我们可以通过实现+*等方法来重载__add____mul__等运算符,但是等效于什么@

1 个答案:

答案 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__重载其反射版本。