__getitem__() en Python

En Python, tout est objet. Il existe de nombreuses méthodes d’appel système « ordinaires » sur ces objets en arrière-plan qui ne sont pas visibles pour le programmeur. Voici venir ce qu'on appelle méthodes magiques . Les méthodes magiques en Python sont des méthodes spéciales qui sont invoquées lorsque nous exécutons un code Python ordinaire. Pour les différencier des fonctions normales, ils sont entourés de doubles traits de soulignement.

Si l’on veut ajouter a et b, on écrit la syntaxe suivante :

 c = a + b 

En interne, il s'appelle ainsi :

 c = a.__add__(b) 

__getitem__()> est une méthode magique en Python qui, lorsqu'elle est utilisée dans une classe, permet à ses instances d'utiliser le []> (indexeur). Supposons que x soit une instance de cette classe, alors x[i]> est à peu près équivalent à type(x).__getitem__(x, i)> .

La méthode __getitem__(self, key)> définit le comportement lors de l'accès à un élément, en utilisant la notation self[key]> . Cela fait également partie des protocoles de conteneur mutables et immuables.

Exemple:




# Code to demonstrate use> # of __getitem__() in python> > > class> Test(> object> ):> > > # This function prints the type> > # of the object passed as well> > # as the object item> > def> __getitem__(> self> , items):> > print> (> type> (items), items)> > # Driver code> test> => Test()> test[> 5> ]> test[> 5> :> 65> :> 5> ]> test[> 'techcodeview.com'> ]> test[> 1> ,> 'x'> ,> 10.0> ]> test[> 'a'> :> 'z'> :> 2> ]> test[> object> ()]>

Sortir:

 5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2) 

Contrairement à d’autres langages, Python vous permet essentiellement de transmettre n’importe quel objet à l’indexeur. Vous pourriez être surpris que le test[1, 'x', 10.0]> analyse réellement. Pour l’interpréteur Python, cette expression équivaut à ceci : test.__getitem__((1, 'x', 10.0))> . Comme vous pouvez le voir, la partie 1, 'x', 10.0 est implicitement analysée comme un tuple. Le test[5:65:5]> L’expression utilise la syntaxe slice de Python. C'est équivalent à cette expression : test[slice(5, 65, 5)].

Le __getitem__> La méthode magique est généralement utilisée pour l'indexation de listes, la recherche dans un dictionnaire ou l'accès à des plages de valeurs. Compte tenu de sa polyvalence, il s’agit probablement de l’une des méthodes magiques les plus sous-utilisées de Python.