Conteneur personnalisé (Conteneur)
Après l'introduction du chapitre précédent, nous savons qu'en Python, les types de conteneurs courants sont : dict, tuple, list, string. Les notions de conteneurs conteneurisés et immuables sont également évoquées. Parmi eux, tuple et string sont des conteneurs immuables, et dict et list sont des conteneurs mutables. La différence entre un conteneur mutable et un conteneur immuable est qu'une fois qu'une valeur est attribuée à un conteneur immuable, un élément qu'il contient ne peut pas être modifié. Bien sûr, pour une introduction détaillée, vous pouvez relire l’article précédent, qui contient des images et des textes.
Voici donc d’abord une question : ces structures de données sont-elles suffisantes pour que nous puissions les développer et les utiliser ? Que devons-nous faire lorsque cela ne suffit pas ou lorsqu’il existe des besoins particuliers qui ne peuvent être satisfaits uniquement avec ces conteneurs de base ?
En ce moment, nous devons personnaliser le conteneur, alors comment devons-nous procéder ?
Fonction | Description |
Type de conteneur immuable personnalisé | Besoin de définir les méthodes __len__ et __getitem__ |
Conteneur de type mutable personnalisé | Ajouté sur la base du type de conteneur immuable Définir __setitem__ et __delitem__ |
Le type de données personnalisé doit être itéré | Besoin de définir __iter__ |
Renvoyer la longueur du conteneur personnalisé | Besoin d'implémenter __len__(self) |
Les conteneurs personnalisés peuvent appeler self[key If]. le type de clé est incorrect, une TypeError sera générée. Si la valeur correspondant à la clé ne peut pas être renvoyée, la méthode doit générer une ValueError | Besoin d'implémenter __getitem__(self, key) |
Lors de l'exécution de la clé self[. ] = value | La méthode appelée est __setitem__(self, key, value) |
Lorsque la méthode del self[key] est exécutée | En fait, la méthode appelée est __delitem__(self, key) |
Lorsque vous souhaitez que votre conteneur s'exécute pour x dans conteneur: ou utilise iter(container), vous devez implémenter __iter__(self). Cette méthode renvoie un itérateur. Jetons un coup d'œil à l'utilisation de la méthode magique ci-dessus. Implémentez une structure de données dans Haskell. langue : |