Что делает конструкция __slots__ в классе, когда имеет смысл её использовать и когда она не подходит, если обрабатываются миллионы объектов в секунду?

Класс с использованием slots в Python ограничивает набор атрибутов, которые могут быть у экземпляров этого класса. Это позволяет:

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

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

Класс с использованием slots в Python ограничивает набор атрибутов, которые могут быть у экземпляров этого класса. Это позволяет:

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

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

Класс с использованием __slots__ в Python ограничивает набор атрибутов, которые могут быть у экземпляров этого класса. Это позволяет:

  • Экономить память, так как не создаётся словарь __dict__ для каждого объекта.
  • Ускорять доступ к атрибутам.

В обычном классе каждый объект хранит свои атрибуты в словаре __dict__, что даёт гибкость, но требует больше памяти и времени на поиск атрибутов.

Пример:

class WithoutSlots:
    def __init__(self, x):
        self.x = x

class WithSlots:
    __slots__ = ['x']
    def __init__(self, x):
        self.x = x

obj1 = WithoutSlots(10)
obj2 = WithSlots(10)

print(hasattr(obj1, '__dict__'))  # True
print(hasattr(obj2, '__dict__'))  # False

Таким образом, __slots__ полезен, когда нужно оптимизировать память и ограничить набор атрибутов, но снижает гибкость класса.

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

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

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

Подробнее