Introduction
Dans ce projet, vous allez apprendre à implémenter un tuple nommé simple en Python. Un tuple nommé est une structure de données qui vous permet d'accéder aux données en utilisant à la fois l'indexation positionnelle et les noms d'attributs, offrant ainsi une manière plus intuitive et lisible de travailler avec des données structurées.
👀 Aperçu
## Sortie
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment créer une classe
NamedTuplequi hérite de la classetupleintégrée - Comment implémenter les méthodes
__init__,__new__,__getitem__et__repr__pour obtenir la fonctionnalité souhaitée - Comment accéder aux données en utilisant à la fois l'indexation positionnelle et les noms d'attributs
- Comment représenter l'instance
NamedTupledans un format lisible
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre le concept de tuples nommés et leurs avantages
- Implémenter une classe de tuple nommé simple en Python
- Utiliser le tuple nommé pour accéder et représenter des données structurées de manière plus intuitive
Implémenter la classe NamedTuple
Dans cette étape, vous allez apprendre à implémenter la classe NamedTuple, qui vous permet d'accéder aux données en utilisant à la fois l'indexation positionnelle et les noms d'attributs.
- Ouvrez le fichier
namedtuple.pydans votre éditeur de code. - Définissez la classe
NamedTuple, qui devrait hériter de la classetuple. - Dans la méthode
__init__, acceptez deux paramètres :iterable(les données) etfields(les noms des données). - Stockez l'
iterableet lesfieldscomme variables d'instanceself.dataetself.fieldsrespectivement. - Utilisez une boucle
forpour itérer sur lesfieldset définir chaque champ comme un attribut de l'instanceNamedTuple, en attribuant la valeur correspondante à partir deself.data. - Implémentez la méthode
__new__pour créer une nouvelle instance de la classeNamedTuple. Cette méthode devrait appeler la méthode__new__de la classetupleet retourner la nouvelle instance. - Implémentez la méthode
__getitem__pour permettre l'accès aux données en utilisant à la fois l'indexation positionnelle et les noms d'attributs. Si l'index est une chaîne de caractères, trouvez l'index du champ correspondant dansself.fieldset retournez la valeur à partir deself.data. - Implémentez la méthode
__repr__pour retourner une représentation en chaîne de caractères de l'instanceNamedTupleau formatNamedTuple(x=1, y=2), oùxetysont les noms de champ, et1et2sont les valeurs correspondantes.
Votre classe NamedTuple terminée devrait ressembler à ceci :
class NamedTuple(tuple):
def __init__(self, iterable, fields):
self.data = iterable
self.fields = tuple(fields)
for i, attr in enumerate(self.fields):
setattr(self, attr, self.data[i])
def __new__(cls, iterable, fields):
return super().__new__(cls, iterable)
def __getitem__(self, index):
if isinstance(index, str):
index = self.fields.index(index)
return self.data[index]
def __repr__(self):
return f"NamedTuple({', '.join(f'{field}={self[field]}' for field in self.fields)})"
Tester la classe NamedTuple
Dans cette étape, vous allez tester la classe NamedTuple que vous avez implémentée dans l'étape précédente.
- Dans le fichier
namedtuple.py, ajoutez le code suivant à la fin du fichier :
if __name__ == "__main__":
## Exemple d'utilisation :
testData = [1, 2]
fields = ["x", "y"]
t = NamedTuple(testData, fields)
print(t) ## Sortie : NamedTuple(x=1, y=2)
print(t[1]) ## Sortie : 2
print(t.x) ## Sortie : 1
- Enregistrez le fichier
namedtuple.py. - Ouvrez un terminal ou une invite de commande et accédez au répertoire contenant le fichier
namedtuple.py. - Exécutez la commande suivante pour exécuter le script :
python3 namedtuple.py
Vous devriez voir la sortie suivante :
NamedTuple(x=1, y=2)
2
1
Cela montre que la classe NamedTuple fonctionne comme prévu, vous permettant d'accéder aux données en utilisant à la fois l'indexation positionnelle et les noms d'attributs.
Félicitations! Vous avez réussi à implémenter un tuple nommé simple en Python.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.



