ExpertiDict

Python · Avançado · Inglês · Técnico

slots

/slɑts/substantivo

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  # AttributeError

Exemplos

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__

Veja também

Todos os termos de Python