Slots de classe Python

Slots de classe Python são um recurso que poucos programadores conhecem. Em uma classe com slot, definimos explicitamente os campos que nossa classe pode ter usando o nome do campo mágico
__slots__
. Isso tem algumas vantagens:- Os objetos criados a partir da classe ocuparão um pouco menos de memória
- É mais rápido acessar os atributos de classe
- Você não pode adicionar aleatoriamente novos atributos a objetos de uma classe com slot
Aqui está um exemplo de como definir uma classe com slot:
>>> class Card: ... __slots__ = 'rank', 'suite' ... def __init__(self, rank, suite): ... self.rank = rank ... self.suite = suite ... >>> qh = Card('queen', 'hearts')
Para mim, a maior vantagem é que você não pode adicionar aleatoriamente novos atributos a uma classe com slot. Pode evitar erros dispendiosos! Para demonstrar:um erro de digitação ao atribuir um atributo a uma classe com slot gerará um erro em vez de o Python criar silenciosamente um novo atributo.
Para classes pequenas sem herança complexa, usar slots pode ser uma vantagem. Especialmente quando você precisa criar muitas instâncias dessa classe, a economia de memória e o acesso mais rápido aos atributos podem fazer a diferença.
Finalmente, só para você saber, você também pode combinar essa técnica com classes de dados!
python