クラスのcaret動作をオーバーライドする必要がありますが、どの演算子のオーバーロードがそれに適用されるかわかりません。例えば:
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'
動作を制御できるようにクラスを作成するにはどうすればよいですか?