python:'int'对象没有属性'__iadd__'

Ali*_*aei 0 python

x用值声明了一个整数变量0.

>>> x = 0
Run Code Online (Sandbox Code Playgroud)

当我运行这一行:

>>> x += 3
>>> x
3
Run Code Online (Sandbox Code Playgroud)

一切顺利.但是当我运行这一行时:

>>> x.__iadd__(3)
Run Code Online (Sandbox Code Playgroud)

Python提出了一个例外:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute '__iadd__'
Run Code Online (Sandbox Code Playgroud)

为什么python会抛出这个异常,而在官方的python文档中,operator模块表示+=运算符调用__iadd__方法?

use*_*ica 6

在官方python文档中,operator模块表示+=运算符调用__iadd__方法?

不,它说a += b相当于a = operator.iadd(a, b),而不是a.__iadd__(b).

operator.iadd(a, b)不等于a.__iadd__(b).operator.iadd回落__add__,__radd__如果__iadd__不存在或返回NotImplemented.