Introduction
Dans ce projet, vous allez apprendre à implémenter un dictionnaire immuable en Python. Un dictionnaire immuable est une structure de données qui ne peut pas être modifiée après sa création, ce qui est utile dans certaines applications où les données doivent rester inchangées.
👀 Aperçu
d["Connection"]='kee-alive'
d["Host"]='www.labex.io'
TypeError("'ImmutableDict' objects are immutable")
TypeError("'ImmutableDict' objects are immutable")
d.get("Host")='www.labex.io'
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment créer une classe
ImmutableDictqui hérite de la classedictintégrée - Comment implémenter des méthodes dans la classe
ImmutableDictpour empêcher la modification du dictionnaire - Comment tester la classe
ImmutableDictpour vous assurer qu'elle se comporte comme prévu
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre le concept de structures de données immuables et leurs cas d'utilisation
- Implémenter un dictionnaire immuable en Python à l'aide de la classe
ImmutableDict - Empêcher la modification du dictionnaire en redéfinissant les méthodes appropriées
- Tester la classe
ImmutableDictpour vous assurer qu'elle fonctionne comme prévu
Implémentation de la classe ImmutableDict
Dans cette étape, vous allez apprendre à implémenter la classe ImmutableDict dans le fichier immutable_dict.py. Suivez les étapes ci-dessous pour terminer cette étape :
- Ouvrez le fichier
immutable_dict.pysitué dans le répertoire/home/labex/project. - Créez une nouvelle classe appelée
ImmutableDictqui hérite de la classedictintégrée.
class ImmutableDict(dict):
- Implémentez les méthodes suivantes dans la classe
ImmutableDictpour rendre le dictionnaire immuable :
def __setitem__(self, key, value):
raise TypeError("'ImmutableDict' objects are immutable")
def __delitem__(self, key):
raise TypeError("'ImmutableDict' objects are immutable")
def pop(self, key, default=None):
raise TypeError("'ImmutableDict' objects are immutable")
def popitem(self):
raise TypeError("'ImmutableDict' objects are immutable")
def clear(self):
raise TypeError("'ImmutableDict' objects are immutable")
def update(self, *args, **kwargs):
raise TypeError("'ImmutableDict' objects are immutable")
def setdefault(self, key, default=None):
raise TypeError("'ImmutableDict' objects are immutable")
Ces méthodes redéfinissent les méthodes correspondantes de la classe dict et lèvent une exception TypeError chaque fois qu'une tentative est faite de modifier le dictionnaire.
- Enregistrez le fichier
immutable_dict.py.
Test de la classe ImmutableDict
Dans cette étape, vous allez tester la classe ImmutableDict pour vous assurer qu'elle se comporte comme prévu. Suivez les étapes ci-dessous pour terminer cette étape :
- Ouvrez le fichier
immutable_dict.pydans le répertoire/home/labex/project. - Ajoutez le code suivant à la fin du fichier pour tester la classe
ImmutableDict:
if __name__ == "__main__":
d = ImmutableDict(Connection="kee-alive", Host="www.labex.io")
print(f'{d["Connection"]=}')
print(f'{d["Host"]=}')
try:
d["Host"] = "test.com"
except TypeError as e:
print(repr(e))
try:
d.pop("Host")
except TypeError as e:
print(repr(e))
print(f'{d.get("Host")=}')
- Enregistrez le fichier
immutable_dict.py. - Exécutez le script
immutable_dict.pydans le terminal :
python3 immutable_dict.py
La sortie devrait être :
d["Connection"]='kee-alive'
d["Host"]='www.labex.io'
TypeError("'ImmutableDict' objects are immutable")
TypeError("'ImmutableDict' objects are immutable")
d.get("Host")='www.labex.io'
Cette sortie démontre que la classe ImmutableDict se comporte comme prévu, et que toute tentative de modification du dictionnaire entraînera une exception TypeError.
Félicitations! Vous avez réussi à implémenter la classe ImmutableDict et à la tester. Vous pouvez désormais utiliser cette classe dans vos applications Python pour stocker des structures de données immuables.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



