在python中实现运算符

时间:2014-03-03 10:05:25

标签: python numpy operators

是否可以在Python中实现运算符?像二进制运算符类似+, - ...等。例如我从R知道每个运算符实际上都是一个函数,所以+是sum(x,y)或类似的东西。我想知道这是否也可以实现,所以我可以例如将二元运算符定义为:*。然后用它做一些事情,就像在Numpy中用它来代替矩阵乘法而不是dot()。我不确定是否可以使用装饰器在python中执行此操作。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Python中的运算符通过special methods重载,例如__add____mul__等。这样您就只能定义现有运算符的行为(+,{ {1}})。与Scala或Haskell不同,您不能声明 new 运算符字面值,例如*。你也不能为之前定义的类重载运算符(因为实现必须是一个方法)。