PEHDOM
тоесть в ситуации a+=b если в а не определен __iadd__ тогда интерпретатор вызовет a__add__(b) отсюда и непонятки
Там дело в том, что один из методов работает неправильно. Таких багов в питоне дофига. Тут надо просто зайти к ним и написать вопрос (если ещё никто не спрашивал): “почему оно не согласуется?”. То, что они работают по-разному, это понятно, но они должны согласованы быть.
В случае с кортежами всё работает.
>>> t = (1, 2, 3)
>>>
>>> t + (4,)
(1, 2, 3, 4)
>>>
>>> t += (4,)
>>> t
(1, 2, 3, 4)
>>>
>>> t = (1, 2, 3)
>>>
>>> t + 'abc'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "str") to tuple
>>>
>>> t += 'abc'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "str") to tuple
>>>
Видишь? А со списками какая фигня происходит. Там должно быть так же, как в bytearray(), поэтому либо bytearray() надо переделать, либо список исправить (вероятнее всего).
4kpt_V
Типа как в последнем пайтоне словари, которые хранят последовательность.
А что там в последнем питоне со словарями?
Вот это?Там написано, что это только замена реализации для ускорения. В плане поведения не меняется ничего и полагаться на новую реализацию нельзя, потому что она может отличаться в другом интерпретаторе, где может быть запущен код. Мы же помним, что код к интерпретатору не привязан, он может запускаться где угодно, на любом компьютере. Совпадать должна только версия питона.