Implémenter un tuple nommé simple

PythonBeginner
Pratiquer maintenant

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 NamedTuple qui hérite de la classe tuple inté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 NamedTuple dans 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.

  1. Ouvrez le fichier namedtuple.py dans votre éditeur de code.
  2. Définissez la classe NamedTuple, qui devrait hériter de la classe tuple.
  3. Dans la méthode __init__, acceptez deux paramètres : iterable (les données) et fields (les noms des données).
  4. Stockez l'iterable et les fields comme variables d'instance self.data et self.fields respectivement.
  5. Utilisez une boucle for pour itérer sur les fields et définir chaque champ comme un attribut de l'instance NamedTuple, en attribuant la valeur correspondante à partir de self.data.
  6. Implémentez la méthode __new__ pour créer une nouvelle instance de la classe NamedTuple. Cette méthode devrait appeler la méthode __new__ de la classe tuple et retourner la nouvelle instance.
  7. 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 dans self.fields et retournez la valeur à partir de self.data.
  8. Implémentez la méthode __repr__ pour retourner une représentation en chaîne de caractères de l'instance NamedTuple au format NamedTuple(x=1, y=2), où x et y sont les noms de champ, et 1 et 2 sont 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.

  1. 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
  1. Enregistrez le fichier namedtuple.py.
  2. Ouvrez un terminal ou une invite de commande et accédez au répertoire contenant le fichier namedtuple.py.
  3. 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.

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer