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

Какие плюсы и минусы slots

Плюсы:

  • Экономия памяти: экземпляры классов со __slots__ не хранят __dict__, что уменьшает занимаемую память.
  • Быстрый доступ к атрибутам: доступ к слотам оптимизирован на уровне CPython.
  • Защита от опечаток: нельзя динамически добавлять атрибуты, не указанные в __slots__.

Минусы:

  • Невозможность динамического добавления атрибутов.
  • Наследование требует аккуратного обращения: если родитель имеет __slots__, а потомок нет, то у потомка будет __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.address = "123 St"  # AttributeError
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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