Что такое __slots__ (магический атрибут)?

__slots__ объявляет фиксированный набор атрибутов экземпляров и может уменьшить память, исключив обычный __dict__. Это оптимизация структуры объекта, а не средство неизменяемости.

Короткий ответ

Что ответить на собеседовании

slots объявляет фиксированный набор атрибутов экземпляров и может уменьшить память, исключив обычный dict. Это оптимизация структуры объекта, а не средство неизменяемости.

Подробный разбор

Ответ с пояснениями

slots объявляет фиксированный набор атрибутов экземпляров и может уменьшить память, исключив обычный dict. Это оптимизация структуры объекта, а не средство неизменяемости.

Например, __slots__ = ('x', 'y') разрешает хранить эти поля без отдельного словаря экземпляра. Чтобы разрешить произвольные дополнительные атрибуты, в slots можно включить __dict__, что меняет экономию памяти. Для weak references обычно нужен __weakref__, если он не предоставлен предком. Наследование тоже важно: наличие словаря у базового класса не исчезает автоматически. Значения объявленных полей остаются изменяемыми, если класс не вводит отдельные ограничения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее