Objets immuables en Python : au-delà des solutions de base
Bien que la classe tuple standard offre l'immuabilité, cet article explore des techniques plus avancées pour créer des objets immuables en Python pur ou avec des extensions C.
Remplacement de __setattr__ : une approche limitée
Une solution courante consiste à remplacer la méthode setattr. Cependant, cela empêche la définition des attributs même dans la fonction init. Par conséquent, il peut ne pas convenir à tous les scénarios.
Sous-classement d'un tuple : une solution partielle
Une autre approche consiste à sous-classer un tuple, en fournissant un nouveau méthode et propriétés pour accéder aux attributs. Cependant, cette méthode n'empêche pas complètement l'accès aux attributs via self[0] et self[1], ce qui peut s'avérer gênant.
La solution nommée : simplicité et compatibilité
Une solution plus simple et plus robuste consiste à utiliser la classe nomméetuple du module collections Python :
Immutable = collections.namedtuple("Immutable", ["a", "b"])
Semblable à la technique précédente, cela crée un type dérivé d'un tuple et utilise __slots__. Il offre plusieurs avantages :
Conclusion
La classe nomméetuple fournit un moyen pratique et efficace de créer des objets immuables en Python. Il s'agit d'une alternative viable aux techniques avancées et offre des avantages supplémentaires tels que la compatibilité avec la sérialisation.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3