Я знаю, что это плохая практика:У 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__'
Из любопытства, если ИНТ объект не имеет __iadd__
, то как же +=
работу?
Это, конечно, потому, что целые числа являются неизменяемыми, то есть нет никакого способа, чтобы целочисленный объект мог увеличивать себя. – delnan
'a + = 5' не становится' a = a + 5'. Он может вызывать '__add__', но только если' __iadd__' не существует (как упоминает Пауло Сардино). –
@ Томас Воутерс: Он не всегда может быть преобразован в это, но это касается случая, о котором спрашивал ОП, а именно «если объект' int' не имеет '__iadd__', то как работает' + = '? - как это было бы с другими неизменяемыми типами, которые имеют метод '__add__'. – martineau