Python如何选择使用方法重载的对象?
例如:
class a:
def __init__(self, other):
self.data = other
def __add__(self, other):
return self.data + other
def __radd__(self,other):
return self.data + other
X = a(1)
X+1
1+X
为什么在X + 1
表达式中,在左侧的对象中调用方法__add__
,在表达式1 + X
中调用方法__add__
在右侧的对象中调用?
答案 0 :(得分:3)
X+1
首先,来电:
X.__add__(1)
成功,所以不需要进一步的工作。
另一方面,这个:
1+X
呼叫
(1).__add__(X)
失败是因为int
不知道如何与班级a
建立联系。 “作为最后的手段”,这是尝试的:
X.__radd__(1)
仅当左操作数不支持相应操作且操作数类型不同时才调用这些函数。