我需要覆盖类中的插入符行为,但我不确定哪个操作符重载适用于它。例如:
class A:
def __init__(self, f):
self.f = f
def __caret__(self, other):
return self.f^other.f
print A(1)^A(2)
此代码错误:
TypeError: unsupported operand type(s) for ^: 'instance' and 'instance'
如何构建类以便控制行为?
答案 0 :(得分:10)
定义A.__xor__()
或A.__rxor__()
。
答案 1 :(得分:2)
^是xor运算符。您可以使用__xor__
方法重载它。
例如
>>> class One:
... def __xor__(self, other):
... return 1 ^ other
...
>>> o = One()
>>> o ^ 1
0
>>> o ^ 0
1