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