Introduzione a __getitem__: un metodo magico in Python

Introduzione a __getitem__: un metodo magico in Python

Nodo di origine: 2011206

Introduzione a __getitem__: un metodo magico in Python
Immagine dell'autore

Python è un linguaggio magico con molti concetti che anche gli utenti avanzati potrebbero non conoscere. I metodi Dunder o Magical sono uno di questi. I metodi magici sono metodi speciali circondati da doppi trattini bassi. Non sono chiamati esplicitamente a differenza dei metodi ordinari in Python. Uno di questi metodi magici è il __getitem__ metodo, consentendo agli oggetti Python di comportarsi come sequenze o contenitori, ad esempio liste, dizionari e tuple. Prende l'indice o la sezione e recupera il valore associato dalla raccolta. Viene richiamato automaticamente ogni volta che utilizziamo il file indexer [ ] operatore per accedere agli elementi all'interno dell'oggetto.

Pensa a questo metodo come a una bacchetta magica che ti garantisce il potere di estrarre le informazioni richieste semplicemente scrivendo poche righe di codice. Interessante vero? Questo metodo è anche ampiamente utilizzato nell'analisi dei dati e nell'apprendimento automatico. Quindi, tuffiamoci più a fondo nel __getitem__ metodo e scoprirne la potenza e la flessibilità.

Voglio che tu capisca che il tuo dovere come programmatore Python è più che scrivere semplicemente codice funzionale. Il tuo codice dovrebbe essere efficiente, leggibile e gestibile. Usando __getitem__ ti aiuterà a raggiungere questi obiettivi. Ecco alcuni altri vantaggi dell'utilizzo di questo metodo magico:

  • Riduce l'utilizzo della memoria consentendo di estrarre solo le informazioni essenziali invece di caricare l'intera struttura dei dati nella memoria
  • Fornisce una maggiore flessibilità nel modo in cui i dati vengono gestiti e manipolati
  • Consente di eseguire iterazioni sulla raccolta senza ripetere i dati
  • Migliora la funzionalità consentendo di scrivere indicizzazione avanzata che potrebbe non essere possibile con i tipi incorporati
  • Semplifica il codice in quanto utilizza la notazione familiare

La sintassi per il __getitem__ il metodo è il seguente:

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

 

Definisce il comportamento della funzione e prende l'indice a cui stai tentando di accedere nel suo parametro. Possiamo usare questo metodo in questo modo:

my_obj[index] 

 

Questo si traduce nella dichiarazione my_obj.__getitem__(index) sotto il cappuccio. Ora potresti pensare che com'è diverso dal built-in indexer [] operatore? Ovunque usi questa notazione, python chiama automaticamente il file __getitem__ metodo per te ed è la scorciatoia per accedere agli elementi. Tuttavia, se si desidera modificare il comportamento dell'indicizzazione per gli oggetti personalizzati, è necessario chiamare in modo esplicito il metodo __getitem__ metodo.

esempio #01

Cominciamo prima con un semplice esempio. Creeremo una classe Studente che avrà l'elenco di tutti gli studenti e potremo accedervi per indice e considerare che l'indice rappresenta il loro ID studente univoco.

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])

 

Produzione:

 

Ora passeremo a un esempio avanzato in cui cambieremo il comportamento di indicizzazione utilizzando il __getitem__ metodo. Supponiamo di avere un elenco di elementi stringa e di voler recuperare l'elemento ogni volta che inserisco la sua posizione di indice e posso anche ottenere la posizione di indice se inserisco la stringa stessa.

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']) 

 

Produzione:

red
green
0 2

Questo metodo è estremamente utile per la ricerca rapida degli attributi dell'istanza. Considerando la flessibilità e la versatilità di questo metodo, direi che questo è uno dei metodi magici più sottoutilizzati di Python. Spero che ti sia piaciuto leggere questo articolo e fammi sapere nella sezione commenti se sei interessato a conoscere gli altri metodi magici in Python.
 
 
Kanwal Mehreen è un aspirante sviluppatore di software con un vivo interesse per la scienza dei dati e le applicazioni dell'IA in medicina. Kanwal è stato selezionato come Google Generation Scholar 2022 per la regione APAC. Kanwal ama condividere le conoscenze tecniche scrivendo articoli su argomenti di tendenza ed è appassionata di migliorare la rappresentanza delle donne nell'industria tecnologica.
 

Timestamp:

Di più da KDnuggets