Встречается на собеседованиях • сегодня

Для чего используется __slots__ в Python

__slots__ оптимизирует память и ускоряет доступ к атрибутам, ограничивая набор допустимых атрибутов экземпляра. По умолчанию Python хранит атрибуты в словаре __dict__, что гибко, но требует больше памяти. __slots__ заменяет __dict__ фиксированным набором атрибутов.

Пример:

python
class Person:
    __slots__ = ['name', 'age']
    
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person('Alice', 30)
p.name = 'Bob'  # OK
p.salary = 5000  # AttributeError: 'Person' object has no attribute 'salary'

Плюсы:

  • Экономия памяти (особенно для множества экземпляров)
  • Ускорение доступа к атрибутам (~20-30%)

Минусы:

  • Нельзя динамически добавлять атрибуты
  • Наследование требует аккуратности (если родитель имеет __slots__, а потомок нет — будет __dict__)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы