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