Sobes.tech
Junior — Middle
78

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

Companies where asked
ИнфоТехСервис
Бергман Инфотех
БилайнБилайн
СБЕР РоботыСБЕР Роботы

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__ помогает экономить память и повышать производительность, особенно при создании большого количества объектов.