Sobes.tech
Junior — Middle
103

Pouvez-vous expliquer ce que sont __slots__ en Python et comment ils influencent la gestion de la mémoire des objets?

Entreprises à qui on a demandé
МТСМТС
Оптимакрос
СБЕР Центр ИИСБЕР Центр ИИ
Бергман Инфотех
СБЕР РоботыСБЕР Роботы

Réponse de l'IA

sobes.tech IA

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