MiddleДебаггингЧастоЕщё не отвечали
Почему оба экземпляра делят один список items?
У каждой корзины должны быть свои товары, но добавление в одну видно в другой.
class Cart:
items = []
def add(self, item):
self.items.append(item)
a = Cart(); b = Cart()
a.add("apple")
print(b.items) # ['apple'] -- утекло между экземплярами!
Найдите и исправьте ошибку.
items = [] — это атрибут класса, общий для всех экземпляров, поэтому a и b изменяют один и тот же список, и b.items показывает ['apple']. Решение: инициализировать его на экземпляр в __init__: def __init__(self): self.items = [].
- ✗Класть изменяемое состояние в атрибут класса вместо
__init__ - ✗Думать, что
self.items.appendсоздаёт атрибут на экземпляр - ✗Считать, что
list()против[]меняет совместное использование
- →Почему чтение
self.itemsнаходит атрибут класса, когда атрибута экземпляра нет? - →Когда атрибут класса — правильное место для общего состояния?