Встречается на собеседованиях • сегодня
В чем разница между классом у которого есть slots и у которого нету
Основное отличие классов со __slots__ и без — в способе хранения атрибутов экземпляров.
-
Без
__slots__
Атрибуты хранятся в динамическом словаре__dict__, что позволяет добавлять новые атрибуты на лету, но потребляет больше памяти. -
Со
__slots__
Атрибуты фиксированы,__dict__не создается, что экономит память и ускоряет доступ к атрибутам. Однако нельзя добавлять новые атрибуты вне__slots__.
python
class WithoutSlots:
pass
obj1 = WithoutSlots()
obj1.new_attr = 42 # OK
class WithSlots:
__slots__ = ['x']
obj2 = WithSlots()
obj2.x = 42 # OK
obj2.y = 10 # AttributeErrorПлюсы __slots__:
- Экономия памяти (особенно для множества экземпляров).
- Быстрый доступ к атрибутам.
Минусы:
- Нельзя динамически добавлять атрибуты.
- Несовместимость с некоторыми инструментами (например,
pickleбез__getstate__).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы