Выбор ответа Middle ООП и dataclasses обновлено
Что дают __slots__
Вопрос
Что делает __slots__ = ("x", "y") в классе?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Убирает dict: меньше памяти, но новых атрибутов нет. Со slots атрибуты хранятся в фиксированных ячейках, а не в словаре экземпляра.
Варианты ответа
- Делает атрибуты
xиyнеизменяемыми после__init__ - Ограничивает число экземпляров класса двумя слотами
- Убирает
__dict__: меньше памяти, но новых атрибутов нетправильный ответ - Ускоряет создание класса, а не экземпляров
Разбор
Со __slots__ атрибуты хранятся в фиксированных ячейках, а не в словаре экземпляра. Это заметно экономит память на миллионах объектов и чуть ускоряет доступ. Цена: obj.z = 1 бросит AttributeError, а наследники без своих __slots__ снова получат __dict__. Неизменяемость даёт frozen=True у dataclass, а не слоты.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.