не работает __setitem__

Создан вот такой класс (сугубо в учебных целях), в котором есть список с координатами точек маршрута и средней скоростью.

class Track:
    def __init__(self):
        self.coords = []

    def add_point(self, x, y, speed):
        self.coords.append(((x, y), speed))

    def verify_indx(self, indx):
        if indx not in range(0, len(self.coords)):
            raise IndexError('некорректный индекс')

    def __getitem__(self, item):
        self.verify_indx(item)
        return self.coords[item]

    def __setitem__(self, key, value):
        self.verify_indx(key)
        lst_coord = list(self.coords[key])
        list(lst_coord)[-1] = value


tr = Track()
tr.add_point(20, 0, 100)  
tr.add_point(50, -20, 80) 
tr.add_point(63.45, 1.24, 60.34)  


tr[2] = 60
c, s = tr[2]

и когда срабатывает строчка print(c, s) я ожидаю увидеть результат (63.45, 1.24) 60, но выводится все равно (63.45, 1.24) 60.34.

В __setitem__ пробовал вместо list(lst_coord)[-1] = value написать lst_coord.insert(-1, value), но тоже все так же. При этом когда в __setitem__ вставил print(lst_coord), выдало нужный результат.


Ответы (1 шт):

Автор решения: n1tr0xs

Сделайте так:

def __setitem__(self, key, value):
    self.verify_indx(key)
    self.coords[key] = (self.coords[key][0], value)
→ Ссылка