Aus*_*son 4 python integer immutability
我知道这是不好的做法:
>>> a = 5
>>> a.__radd__(5)
10
>>> a
5
>>> a.__iadd__(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute '__iadd__'
Run Code Online (Sandbox Code Playgroud)
出于好奇,如果一个int对象没有__iadd__,那怎么+=工作?
出于好奇,如果一个int对象没有
__iadd__,那么+ =如何工作?
a += 5
Run Code Online (Sandbox Code Playgroud)
变
a = a + 5
Run Code Online (Sandbox Code Playgroud)
因为__iadd__不可变对象没有.
这是(实际上)
a = a.__add__( 5 )
Run Code Online (Sandbox Code Playgroud)
并且工作得很好.创建一个新的int对象__add__.
一些规则在http://docs.python.org/reference/datamodel.html#coercion-rules.
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |