Sobes.tech
Junior — Middle

Pode explicar o que são __slots__ em Python e como eles afetam a gestão de memória dos objetos?

sobes.tech IA

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