我需要为一个对象创建一个操作符,我想知道什么是最好的方法。
例如为运营商添加
我可以用这种方式写这个吗?
def _add_(self,other):
new=self.add(self,other)// can I write like that?
return new
感谢您的帮助!
答案 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
有用的列表