Back to questions
МТС
СБЕР Центр ИИ
СБЕР Роботы
Junior — Middle
63
Можете объяснить, что такое __slots__ в Python и как он влияет на управление памятью объектов?
Companies where asked
Оптимакрос
Бергман Инфотех
Answer from AI
sobes.tech AI
__slots__ в Python — это механизм, который позволяет ограничить набор атрибутов, которые могут быть у экземпляров класса, и тем самым оптимизировать использование памяти.
По умолчанию каждый объект Python хранит свои атрибуты в словаре (__dict__), что занимает дополнительную память. Если определить __slots__ в классе, Python не создаёт словарь для каждого экземпляра, а выделяет фиксированное пространство для указанных атрибутов.
Пример использования:
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__ снижает потребление памяти и может немного ускорить доступ к атрибутам, но ограничивает динамическое добавление новых атрибутов.