Objetos imutáveis em Python: além das soluções básicas
Embora a classe de tupla padrão forneça imutabilidade, este artigo explora técnicas mais avançadas para criar objetos imutáveis em Python puro ou com extensões C.
Substituindo __setattr__: uma abordagem limitada
Uma solução comum é substituir o método setattr. No entanto, isso impede a configuração de atributos mesmo na função init. Portanto, pode não ser adequado para todos os cenários.
Subclassificando a tupla: uma solução parcial
Outra abordagem é subclassificar a tupla, fornecendo um novo[ personalizado &&&] método e propriedades para acessar atributos. No entanto, esse método não impede completamente o acesso ao atributo por meio de self[0] e self[1], o que pode ser inconveniente.
A solução nomeadatuple: simplicidade e compatibilidade
Uma solução mais simples e robusta é usar a classenamedtuple do módulo de coleções do Python:Immutable = collections.namedtuple("Immutable", ["a", "b"])
Semelhante à técnica anterior, isso cria um tipo derivado da tupla e usa __slots__. Ele oferece várias vantagens:Conclusão
A classenamedtuple fornece uma maneira conveniente e eficiente de criar objetos imutáveis em Python. É uma alternativa viável às técnicas mais avançadas e oferece benefícios adicionais, como compatibilidade de serialização.Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3