我知道這是不好的做法:python int沒有__iadd __()方法?
>>> 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__'
出於好奇,如果一個int對象沒有__iadd__
,那麼如何做+=
工作?
這當然是因爲整數是不可變的,也就是說整數對象無法自增。 – delnan 2010-11-03 15:37:11
'a + = 5'不會變成'a = a + 5'。它可以調用'__add__',但只有在__iadd__不存在的時候(就像Paulo Scardino所說的那樣)。 – 2010-11-03 15:39:34
@Thomas Wouters:它可能並不總是被轉換成它,但它確實適用於OP詢問的情況,即「如果一個'int'對象沒有'__iadd__',那麼'+ ='是如何工作的?」 - 和其他具有'__add__'方法的不可變類型一樣。 – martineau 2010-11-03 17:11:18