Sobes.tech
Junior — Middle
106

Poți explica ce sunt __slots__ în Python și cum influențează gestionarea memoriei obiectelor?

Companiile au fost întrebate
МТСМТС
Оптимакрос
СБЕР Центр ИИСБЕР Центр ИИ
Бергман Инфотех
СБЕР РоботыСБЕР Роботы

Răspuns de la 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__ снижает потребление памяти и может немного ускорить доступ к атрибутам, но ограничивает динамическое добавление новых атрибутов.