Выбор ответа Junior ООП и dataclasses спрашивают часто обновлено
Изменяемый атрибут класса
Вопрос
Что выведет print(b.items)?
class Cart:
items = []
a, b = Cart(), Cart()
a.items.append('x')
print(b.items)
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: ['x']. items объявлен на уровне класса, поэтому это один список на все экземпляры. a.items.append не создаёт атрибут экземпляра, а меняет общий список через поиск в классе. b.items видит тот же список.
Варианты ответа
[]AttributeError['x']правильный ответ['x', 'x']
Разбор
items объявлен на уровне класса, поэтому это один список на все экземпляры. a.items.append не создаёт атрибут экземпляра, а меняет общий список через поиск в классе. b.items видит тот же список. Изменяемое состояние экземпляра создают в __init__: self.items = [].
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.