Sobes.tech
Junior — Middle
95

Kun je uitleggen wat __slots__ in Python zijn en hoe ze het geheugenbeheer van objecten beïnvloeden?

Bedrijven waar gevraagd werd
МТСМТС
Оптимакрос
СБЕР Центр ИИСБЕР Центр ИИ
Бергман Инфотех
СБЕР РоботыСБЕР Роботы

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