¿Qué es __slots__ y para qué sirve? Guía completa para optimizar clases en Python
En Python, las clases son fundamentales en la programación orientada a objetos. Sin embargo, cuando trabajas intensamente con objetos, es posible que notes que tus programas consumen una cantidad significativa de memoria. Esto se vuelve crítico especialmente al crear millones de instancias de una misma clase.
En estos casos, un mecanismo especial viene al rescate: __slots__. No es solo un elemento sintáctico, sino una poderosa herramienta de optimización que te permite controlar la memoria y acelerar la ejecución de tus programas.
Veamos qué es __slots__, cómo usarlo y en qué situaciones realmente necesitas aplicarlo.
¿Qué es __slots__ en Python?
__slots__ es un atributo especial de clase que restringe la lista de atributos permitidos para las instancias de esa clase.
Por defecto, al crear objetos en Python, sus atributos se almacenan en el diccionario __dict__. Esto es práctico, pero ineficiente en cuanto a memoria, especialmente cuando creas muchos objetos del mismo tipo.
Cuando defines __slots__, Python, en lugar de usar un diccionario, crea estructuras de almacenamiento estático para los atributos, lo que ahorra memoria de forma significativa y acelera el acceso a dichos atributos.
📚 Ejemplo sencillo sin usar __slots__:
Como puedes ver, todos los atributos se almacenan en