我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__方法?
在官方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.
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |