Зачем в классах Python использовать магический атрибут __slots__?

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

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

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

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

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

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

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

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

Отличие от обычных атрибутов в том, что при использовании __slots__ Python заранее знает, какие атрибуты допустимы, и не создаёт динамический словарь атрибутов.

Пример:

class Point:
    __slots__ = ('x', 'y')

    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(1, 2)
p.x = 10  # работает
# p.z = 3  # вызовет AttributeError, так как 'z' не в __slots__

Таким образом, __slots__ полезен для оптимизации памяти и предотвращения случайного добавления новых атрибутов.

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

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

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

Подробнее