Introducere în __getitem__: O metodă magică în Python

Introducere în __getitem__: O metodă magică în Python

Nodul sursă: 2011206

Introducere în __getitem__: O metodă magică în Python
Imagine de autor

Python este un limbaj magic cu multe concepte cu care chiar și utilizatorii avansați nu sunt familiarizați. Metodele Dunder sau Magical este una dintre ele. Metodele magice sunt metode speciale care sunt înconjurate de caractere de subliniere duble. Ele nu sunt numite în mod explicit, spre deosebire de metodele obișnuite din python. O astfel de metodă magică este __getitem__ metoda, permițând obiectelor Python să se comporte ca secvențe sau containere, de exemplu liste, dicționare și tupluri. Preia indexul sau felia și își preia valoarea asociată din colecție. Este invocat automat ori de câte ori folosim indexer [ ] operator pentru a accesa elementele din obiectul dvs.

Gândiți-vă la această metodă ca la o baghetă magică care vă oferă puterea de a extrage informațiile necesare doar scriind câteva rânduri de cod. Interesant nu? Această metodă este, de asemenea, utilizată pe scară largă în analiza datelor și învățarea automată. Deci, haideți să ne aprofundăm mai mult în __getitem__ metoda și descoperiți puterea și flexibilitatea acesteia.

Vreau să înțelegi că datoria ta ca programator Python este mai mult decât doar a scrie cod funcțional. Codul dvs. ar trebui să fie eficient, ușor de citit și de întreținut. Folosind __getitem__ vă va ajuta să atingeți aceste obiective. Iată câteva alte beneficii ale utilizării acestei metode magice:

  • Reduce utilizarea memoriei, permițându-vă să extrageți doar informațiile esențiale în loc să încărcați întreaga structură de date în memorie
  • Oferă o mai mare flexibilitate în modul în care datele sunt manipulate și manipulate
  • Vă permite să repetați colecția fără a trece în buclă peste date
  • Îmbunătățește funcționalitatea, permițându-vă să scrieți indexări avansate care ar putea să nu fie posibile cu tipurile încorporate
  • Simplifica codul deoarece folosește notația familiară

Sintaxa pentru __getitem__ metoda este urmatoarea:

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

 

Acesta definește comportamentul funcției și preia indexul pe care încercați să-l accesați în parametrul său. Putem folosi această metodă astfel:

my_obj[index] 

 

Aceasta se traduce prin afirmație my_obj.__getitem__(index) sub capotă. Acum s-ar putea să vă gândiți că este diferit de cel încorporat indexer [] operator? Oriunde utilizați această notație, python apelează automat __getitem__ metodă pentru dvs. și este prescurtarea pentru accesarea elementelor. Dar dacă doriți să schimbați comportamentul indexării pentru obiectele personalizate, trebuie să apelați în mod explicit __getitem__ metodă.

Exemplul # 01

Să începem mai întâi cu un exemplu ușor. Vom crea o clasă Student care va avea lista tuturor studenților și îi putem accesa prin index și considerăm că indexul reprezintă ID-ul lor unic de student.

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

 

ieșire:

 

Acum vom trece la un exemplu avansat în care vom schimba comportamentul de indexare folosind __getitem__ metodă. Să presupunem că am o listă de elemente șir și vreau să recuperez elementul ori de câte ori introduc poziția sa de index și pot obține și poziția de index dacă intru șirul în sine.

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

 

ieșire:

red
green
0 2

Această metodă este extrem de utilă pentru căutarea rapidă a atributelor instanței. Având în vedere flexibilitatea și versatilitatea acestei metode, aș spune că aceasta este una dintre cele mai subutilizate metode magice ale Python. Sper că v-a plăcut să citiți acest articol și să-mi spuneți în secțiunea de comentarii dacă sunteți interesat să aflați despre celelalte metode magice din Python.
 
 
Kanwal Mehreen este un dezvoltator de software aspirant cu un interes puternic pentru știința datelor și aplicațiile AI în medicină. Kanwal a fost selectat ca Google Generation Scholar 2022 pentru regiunea APAC. Kanwal iubește să împărtășească cunoștințele tehnice scriind articole pe subiecte în tendințe și este pasionat de îmbunătățirea reprezentării femeilor în industria tehnologiei.
 

Timestamp-ul:

Mai mult de la KDnuggets