Sobes.tech
Back to questions
Junior — Middle
63

Объясните использование __slots__ в Python и как оно влияет на управление памятью объектов?

Answer from AI

sobes.tech AI

В Python __slots__ используется для ограничения набора атрибутов, которые могут быть у экземпляров класса. По умолчанию у каждого объекта есть словарь __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__ помогает экономить память при большом количестве объектов и предотвращает динамическое добавление новых атрибутов.