JET School

Что такое Slots?

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

Механизм __slots__ позволяет предварительно определить набор допустимых атрибутов для объектов и избежать создания __dict__, тем самым экономя память и повышая производительность.

Зачем использовать __slots__?

  • Оптимизация памяти
  • Повышение производительности
  • Ограничение атрибутов объекта

Пример:


class Person:

__slots__ = ['name', 'age']


def __init__(self, name, age):

self.name = name

self.age = age


p = Person("Alex", 30)

print(p.name)

Если вы попробуете добавить p.city = "Moscow" — получите AttributeError, потому что атрибут city не указан в __slots__.

Важно помнить:

  • Объекты не будут иметь __dict__, если явно не добавить его в __slots__.
  • Динамически добавлять новые атрибуты нельзя.
  • Сложное наследование с __slots__ требует аккуратности.

Когда использовать:

  • В системах, где создаются тысячи и миллионы объектов
  • В приложениях, критичных к памяти и скорости (например, веб-серверы, игры, аналитика данных)

Теги:

Связанные термины:

Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!