是否可以在Python中使用++运算符实现一个类,例如使a ++ b
为有效表达式?
jujishou1984 回答:可以在Python中实现二进制++运算符吗?
a++b
实际上会调用两个运算符,但是可以的。
+b
将呼叫__pos__
。然后,您将__add__
+b
到a
class K:
def __pos__(self):
return self
def __add__(self,*args):
return self
a = K()
b = K()
a++b
print(a++b)
,
Python将a++b
解释为a + (+b)
,因此这是通过覆盖__pos__
运算符(只要我们不打算使用它)来实现它的一种方法:>
class Digits(int):
def __pos__(self):
class Concat:
def __init__(self,val):
self.val = val
def __radd__(self,lhs):
return Digits(str(lhs)+str(self.val))
return Concat(self)
print(Digits(1) + Digits(23))
print(Digits(1) + (+Digits(23)))
print(Digits(1) ++ Digits(23))
其中包含以下内容:
24
123
123