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.
Remplacer __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 être gênant.
La solution nommée tuple : simplicité et compatibilité
Une solution plus simple et plus robuste consiste à utiliser la classe nomméetuple du module collections Python :<code class="python">Immutable = collections.namedtuple("Immutable", ["a", "b"])</code>
Conclusion
La classe nomméetuple fournit un moyen pratique et efficace de créer des objets immuables en Python. C'est une alternative viable aux techniques avancées et offre des avantages supplémentaires tels que la compatibilité avec la sérialisation.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!