Python · Avançado · Inglês · Técnico
slots
Atributo de classe __slots__ que lista os únicos atributos permitidos nas instâncias. O Python dispensa o __dict__ de cada objeto, economizando memória e bloqueando atributos novos.
Onde usar
Usado em classes com milhões de instâncias pequenas, como nós e pontos, para reduzir memória. No Python 3.10 ou superior, dataclass(slots=True) faz isso automaticamente.
Em código
class Ponto:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x, self.y = x, y
p = Ponto(1, 2)
p.z = 3 # AttributeErrorExemplos
We added slots to cut memory usage per instance.
Adicionamos slots para reduzir a memória por instância.
With slots you get an AttributeError for new attributes.
Com slots, atributos novos geram AttributeError.
Cuidado
Uma subclasse que não declara __slots__ ganha o __dict__ de volta e perde a economia de memória.
Sinônimos
__slots__