Я немного запутался в изменении членов кортежа. Следующее не работает:
>>> thing = (['a'],)
>>> thing[0] = ['b']
TypeError: 'tuple' object does not support item assignment
>>> thing
(['a'],)
Но это работает:
>>> thing[0][0] = 'b'
>>> thing
(['b'],)
Также работает:
>>> thing[0].append('c')
>>> thing
(['b', 'c'],)
Не работает, и работает (а?!):
>>> thing[0] += 'd'
TypeError: 'tuple' object does not support item assignment
>>> thing
(['b', 'c', 'd'],)
Вроде бы эквивалентно предыдущему, но работает:
>>> e = thing[0]
>>> e += 'e'
>>> thing
(['b', 'c', 'd', 'e'],)
Так каковы же правила игры, когда можно и нельзя модифицировать что-то внутри кортежа? Кажется, что это больше похоже на запрет использования оператора присваивания для членов кортежа, но последние два случая ставят меня в тупик.