__add__方法和Python中的负数

Ign*_*nka 3 python integer add

我总是在Python(3.5)中使用"+"运算符调用引擎下的__add__方法并返回总和.但是,当涉及负数时,我注意到一些古怪的行为.自然,

>>>-3 + 7
Run Code Online (Sandbox Code Playgroud)

返回4

但(!)

>>>-3 .__add__(7)
Run Code Online (Sandbox Code Playgroud)

返回-10和

>>>-3 .__add__(-7)
4
>>>3 .__add__(7)
10
Run Code Online (Sandbox Code Playgroud)

如果对象被签名,是否有__add__签署参数的原因.此外,该方法有什么变化,以便当我使用"+"时,"正确"值出现?

Mar*_*ers 8

-也是一个运营商,一个单一的运营商.你叫__add__3,而不是结果-应用到3,因为属性访问绑定比更紧密地-操作.

使用括号:

>>> (-3).__add__(7)
4
Run Code Online (Sandbox Code Playgroud)

您的代码将-一元运算符应用于结果3 + 7.