Implémentation d'objets immuables en Python
En Python, créer un objet immuable peut présenter des défis. Une solution courante consiste à sous-classer un tuple, comme démontré dans l'extrait de code fourni. Cependant, cette approche présente l'inconvénient d'accéder aux attributs via des index.
Solution Python pure
Une solution élégante proposée dans la réponse consiste à utiliser le type collections.namedtuple de Python. Ce type se comporte de manière similaire à l'approche de sous-classe tuple mais offre des avantages supplémentaires :
Pour créer un objet immuable avec un tuple nommé :
<code class="python">Immutable = collections.namedtuple("Immutable", ["a", "b"])</code>
Adressage de l'accès aux attributs indexés
Bien que nommétuple résout le problème de modification des attributs via __setattr__, il permet toujours d'accéder aux attributs via des indices comme [0] et [1]. Cette limitation peut être atténuée en structurant soigneusement votre code pour éviter de s'appuyer sur ces méthodes indirectes.
Approche alternative avec extension C
Dans les cas où une implémentation plus impliquée est nécessaire , une extension C peut être développée pour fournir une véritable immuabilité en :
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!