如何在python中创建一个运算符函数?

时间:2014-05-05 08:40:40

标签: python python-2.7 python-3.x

我需要为一个对象创建一个操作符,我想知道什么是最好的方法。

例如为运营商添加

我可以用这种方式写这个吗?

def _add_(self,other):
   new=self.add(self,other)// can I write like that?
    return new

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

您可以使用python魔术函数__add__来处理+

示例:

class A():
    def __init__(self, num):
        self.num = num
    def __add__(self, other):
        return self.num + other

a = A(6)

>>> print a+5
11

为了获得更大的灵活性,您还应该定义__radd__,这适用于上面示例中工作的反向添加案例5+a

class A():
    def __init__(self, num):
        self.num = num
    def __add__(self, other):
        return self.num + other
    def __radd__(self, other):
        return self.num + other

>>> a = A(6)
>>> print 5+a
11
>>> print a+5
11

或者,如果您想作为对象而不是int返回,则可以这样做:

class A():
    def __init__(self, num):
        self.num = num
    def __add__(self, other):
        return A(self.num + other)

a = A(5)
b = a+5
print b.num
10
print a.num
5

上面已经证明的是operator overloading。它通过让用户为运算符定义自定义方法来覆盖用于处理运算符的内置默认方法。

以下是您可能会发现对which operators can be overloaded

有用的列表