Sobes.tech
Назад к вопросам
Middle+
7

Что такое __slots__ в Python?

Компании, где спрашивали
Литрес

Ответ от нейросети

sobes.tech AI

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

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

Пример:

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

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

p = Point(1, 2)
print(p.x, p.y)  # 1 2

# p.z = 3  # вызовет AttributeError, так как 'z' не в __slots__

Использование __slots__ полезно, когда создаётся много объектов одного класса и важна оптимизация памяти. Однако это ограничивает динамическое добавление новых атрибутов.