O que é __slots__ e para que serve? Guia completo de otimização de classes em Python
Na linguagem Python, as classes desempenham um papel fundamental na programação orientada a objetos. No entanto, ao trabalhar intensivamente com objetos, você pode notar que esses programas consomem uma quantidade significativa de memória. Isso se torna especialmente crítico ao criar milhões de instâncias da mesma classe.
Nesses casos, um mecanismo especial vem em socorro: o __slots__. Não se trata apenas de um elemento sintático, mas de uma ferramenta poderosa de otimização que permite controlar a memória e acelerar a execução dos programas.
Vamos entender o que é __slots__, como usá-lo e em quais situações ele é realmente necessário.
O que é __slots__ em Python?
__slots__ é um atributo especial de classe que restringe a lista de atributos permitidos para as instâncias dessa classe.
Por padrão, ao criar objetos em Python, seus atributos são armazenados no dicionário __dict__. Isso é conveniente, mas ineficiente em termos de memória, especialmente quando muitos objetos do mesmo tipo são criados.
Quando você define __slots__, o Python, em vez de usar o dicionário, cria estruturas alocadas estaticamente para armazenar os atributos, economizando significativamente memória e acelerando o acesso a esses atributos.
📚 Exemplo simples sem usar __slots__:
Como você pode ver, todos os atributos são armazenados em