Dominando __slots__ em Classes Python: Otimize Memória e Velocidade

Slots de classes Python são um recurso que poucos programadores conhecem. Em uma classe com slots, definimos explicitamente os campos que nossa classe tem permissão para ter usando o nome de campo mágico __slots__. Isso traz algumas vantagens:
- Objetos criados da classe ocuparão ligeiramente menos memória
- É mais rápido acessar atributos da classe
- Você não pode adicionar aleatoriamente novos atributos a objetos de uma classe com slots
Aqui está um exemplo de como definir uma classe com slots:
>> 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 slots. Isso pode evitar erros custosos! Para demonstrar: um erro de digitação ao atribuir um atributo a uma classe com slots lançará um erro em vez de Python silenciosamente criar um novo atributo.
Para classes pequenas sem herança complexa, usar slots pode ser uma vantagem. Especialmente quando você precisa criar muitas instâncias de tal classe, a economia de memória e o acesso mais rápido a atributos podem fazer diferença.
Finalmente, só para você saber, você pode combinar esta técnica com data classes também!
python
- Dominando Tipos de Dados em Python: Guia Prático
- Dominando Operadores em Python: Guia Completo
- Dominando a Declaração Pass em Python: Guia Prático
- Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
- Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
- Dominando Exceções Customizadas em Python: Guia Prático
- Dominando Programação Orientada a Objetos em Python: Classes, Herança, Encapsulamento e Polimorfismo
- Dominando Iteradores em Python: Como Funcionam e Como Criar os Seus
- Closures em Python Explicados: Como Funções Aninhadas Capturam Variáveis
- Dominando datetime do Python: Guia Prático de Datas, Horários e Fusos Horários