在Python中实现运算符
在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不同的是,你不能声明一个新的运算符,比如 *.
。而且,你也不能为之前定义的类重载一个运算符,因为实现必须是一个方法。