在Python中实现运算符

0 投票
2 回答
1139 浏览
提问于 2025-04-17 20:35

在Python中,可以实现运算符吗?比如像加法、减法这样的二元运算符。例如,我知道在R语言中,每个运算符实际上都是一个函数,所以加法可以表示为sum(x,y)之类的。我在想,Python中是否也可以这样实现?比如我可以定义一个二元运算符,比如说*,然后用它来做一些事情,比如用它来进行矩阵乘法,而不是在Numpy中使用dot()函数。我不太确定在Python中是否可以用装饰器来做到这一点。

2 个回答

0

你可以在这里找到可以用来实现运算符的特殊方法列表:http://docs.python.org/2/reference/datamodel.html

比如,要实现一个 += 加法运算符,你可以这样做:

class Adder(object):
    def __init__(self, x):
        self.x = x

    def __iadd__(self, other):
        self.x += other.x
        return self

if __name__ == '__main__':

    a1 = Adder(0)
    a2 = Adder(1)
    a1 += a2
    print a1.x
0

在Python中,运算符是通过一些特别的方法来重载的,比如 __add____mul__ 等等。这样一来,你就可以为现有的运算符(比如 +*)定义自己的行为。和Scala或Haskell不同的是,你不能声明一个新的运算符,比如 *.。而且,你也不能为之前定义的类重载一个运算符,因为实现必须是一个方法。

撰写回答