__slots__ en Python: Qué es y cómo optimizar la memoria de tus clases

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿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__:

python
class Person: def __init__(self, name, age): self.name = name self.age = age p = Person("Alice", 30) print(p.__dict__) # {'name': 'Alice', 'age': 30}

Como puedes ver, todos los atributos se almacenan en

Blogs

Book Recommendations