Introduction à __getitem__ : une méthode magique en Python

Introduction à __getitem__ : une méthode magique en Python

Nœud source: 2011206

Introduction à __getitem__ : une méthode magique en Python
Image par auteur

Python est un langage magique avec de nombreux concepts que même les utilisateurs avancés peuvent ne pas connaître. Les méthodes Dunder ou Magical en font partie. Les méthodes magiques sont des méthodes spéciales entourées de doubles traits de soulignement. Elles ne sont pas appelées explicitement contrairement aux méthodes ordinaires en python. L'une de ces méthodes magiques est la __getitem__ , permettant aux objets Python de se comporter comme des séquences ou des conteneurs, par exemple des listes, des dictionnaires et des tuples. Il prend l'index ou la tranche et récupère sa valeur associée dans la collection. Il est invoqué automatiquement chaque fois que nous utilisons le indexer [ ] opérateur pour accéder aux éléments de votre objet.

Considérez cette méthode comme une baguette magique qui vous donne le pouvoir d'extraire les informations requises en écrivant simplement quelques lignes de code. Intéressant non ? Cette méthode est également largement utilisée dans l'analyse de données et l'apprentissage automatique. Alors, plongeons plus profondément dans le __getitem__ méthode et découvrez sa puissance et sa flexibilité.

Je veux que vous compreniez que votre devoir en tant que programmeur Python ne se limite pas à écrire du code fonctionnel. Votre code doit être efficace, lisible et maintenable. En utilisant __getitem__ vous aidera à atteindre ces objectifs. Voici quelques autres avantages de l'utilisation de cette méthode magique :

  • Réduit l'utilisation de la mémoire en vous permettant d'extraire uniquement les informations essentielles au lieu de charger la structure de données complète dans la mémoire
  • Fournit une plus grande flexibilité dans la façon dont les données sont traitées et manipulées
  • Vous permet de parcourir la collection sans boucler les données
  • Améliore la fonctionnalité en vous permettant d'écrire une indexation avancée qui peut ne pas être possible avec les types intégrés
  • Simplifie le code car il utilise la notation familière

La syntaxe pour le __getitem__ La méthode est la suivante:

def __getitem__(self, index): # Your Implementation pass

 

Il définit le comportement de la fonction et prend l'index auquel vous essayez d'accéder dans son paramètre. Nous pouvons utiliser cette méthode comme ceci :

my_obj[index] 

 

Cela se traduit par la déclaration my_obj.__getitem__(index) sous la capuche. Maintenant, vous pourriez penser qu'en quoi est-ce différent de l'intégration indexer [] opérateur? Partout où vous utilisez cette notation, python appelle automatiquement le __getitem__ méthode pour vous et est le raccourci pour accéder aux éléments. Mais si vous souhaitez modifier le comportement de l'indexation pour les objets personnalisés, vous devez appeler explicitement le __getitem__ méthode.

Exemple #01

Commençons d'abord par un exemple simple. Nous allons créer une classe Student qui aura la liste de tous les étudiants et nous pourrons y accéder par index et considérer que l'index représente leur ID étudiant unique.

class Student: def __init__(self, names): self.names=names def __getitem__(self,index): return self.names[index] section_A= Student(["David", "Elsa", "Qasim"])
print(section_A[2])

 

Sortie :

 

Nous allons maintenant passer à un exemple avancé où nous allons modifier le comportement d'indexation à l'aide de la __getitem__ méthode. Supposons que j'ai une liste d'éléments de chaîne et que je souhaite récupérer l'élément chaque fois que j'entre sa position d'index et je peux également obtenir la position d'index si j'entre la chaîne elle-même.

class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): if isinstance(index, int): return self.items[index] elif isinstance(index, str): return self.items.index(index) else: raise TypeError("Invalid Argument Type") my_list = MyList(['red', 'blue', 'green', 'black']) # Indexing with integer keys
print(my_list[0]) print(my_list[2]) # Indexing with string keys
print(my_list['red']) print(my_list['green']) 

 

Sortie :

red
green
0 2

Cette méthode est extrêmement utile pour la recherche rapide des attributs d'instance. Compte tenu de la flexibilité et de la polyvalence de cette méthode, je dirais que c'est l'une des méthodes magiques les plus sous-utilisées de Python. J'espère que vous avez apprécié la lecture de cet article et faites-moi savoir dans la section des commentaires si vous êtes intéressé à connaître les autres méthodes magiques en Python.
 
 
Kanwal Mehren est un développeur de logiciels en herbe avec un vif intérêt pour la science des données et les applications de l'IA en médecine. Kanwal a été sélectionné comme Google Generation Scholar 2022 pour la région APAC. Kanwal aime partager ses connaissances techniques en écrivant des articles sur des sujets d'actualité et se passionne pour l'amélioration de la représentation des femmes dans l'industrie technologique.
 

Horodatage:

Plus de KDnuggetsGenericName