не работает __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)