¿Cuál es el efecto principal de definir __slots__ = ("x", "y") en una clase?
Opciones
- Hace que las instancias sean inmutables, así que ningún atributo se puede reasignar
- Elimina el
__dict__de cada instancia, ahorra memoria y fija los atributos (Opción correcta) - Hace la clase thread-safe bloqueando cada acceso a un atributo
- Convierte la clase en una dataclass con métodos generados
Respuesta
Elimina el __dict__ de cada instancia, lo que ahorra memoria y bloquea atributos nuevos
Por qué
Normalmente cada objeto guarda sus atributos en su propio diccionario (__dict__), y eso cuesta memoria.
Con __slots__, Python reserva espacios fijos solo para los nombres listados y elimina ese diccionario.
Resultado: menos memoria por objeto (útil si tienes millones) y no puedes añadir otros atributos por error.
Recuerda
__slots__ = menos memoria y un conjunto fijo de atributos.