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