__slots__
proporciona una pequeña optimización del uso de la memoria, ya que puede impedir que un __dict__
siendo asignada para almacenar atributos de la instancia. Esto puede ser útil si tienes una gran cantidad de instancias.
La restricción de la que está hablando es principalmente un efecto secundario accidental de la forma en que se implementa. En particular, solo detiene la creación de un __dict__
si su clase hereda de una clase base que no tiene un __dict__
(como object
) e incluso entonces no se detendrá __dict__
asignándose en ninguna subclase a menos que también definan __slots__
. No pretende ser un mecanismo de seguridad, por lo que es mejor no intentar usarlo como tal.
Todas las clases antiguas obtienen __dict__
automáticamente, por lo que __slots__
no tiene ningún efecto. Si heredas de object
obtendrás el efecto que estás buscando, pero básicamente no te molestes con __slots__
hasta que sepas que tienes millones de instancias y que la memoria es un problema.
Funciona muy bien! ¡Gracias! –