Sissejuhatus __getitem__: maagiline meetod Pythonis

Sissejuhatus __getitem__: maagiline meetod Pythonis

Allikasõlm: 2011206

Sissejuhatus __getitem__: maagiline meetod Pythonis
Pilt autorilt

Python on maagiline keel, millel on palju kontseptsioone, millega isegi kogenud kasutajad ei pruugi tuttavad olla. Dunder või Magical meetodid on üks neist. Maagilised meetodid on erimeetodid, mis on ümbritsetud topelt allkriipsudega. Erinevalt Pythoni tavalistest meetoditest ei nimetata neid selgesõnaliselt. Üks selline maagiline meetod on __getitem__ meetod, mis võimaldab Pythoni objektidel käituda nagu jadad või konteinerid, nt loendid, sõnastikud ja kordused. See võtab indeksi või lõigu ja hangib kogust sellega seotud väärtuse. Seda kutsutakse automaatselt välja, kui kasutame indexer [ ] operaator, et pääseda juurde teie objekti elementidele.

Mõelge sellele meetodile kui võlukepile, mis annab teile voli mõne koodirea kirjutamisega vajaliku teabe hankida. Huvitav eks? Seda meetodit kasutatakse laialdaselt ka andmeanalüüsis ja masinõppes. Niisiis, sukeldume sügavamale __getitem__ meetodit ning avastage selle võimsus ja paindlikkus.

Ma tahan, et te mõistaksite, et teie kohustus Pythoni programmeerijana on midagi enamat kui lihtsalt funktsionaalse koodi kirjutamine. Teie kood peaks olema tõhus, loetav ja hooldatav. Kasutades __getitem__ aitab teil neid eesmärke saavutada. Siin on mõned muud selle maagilise meetodi kasutamise eelised:

  • Vähendab mälukasutust, võimaldades kogu andmestruktuuri mällu laadimise asemel välja võtta ainult olulise teabe
  • Pakub suuremat paindlikkust andmete käitlemisel ja nendega manipuleerimisel
  • Võimaldab teil kogust korrata, ilma andmete üle silmusteta
  • Parandab funktsioone, võimaldades teil kirjutada täpsemat indekseerimist, mis ei pruugi olla sisseehitatud tüüpide puhul võimalik
  • Lihtsustab koodi, kuna see kasutab tuttavat tähistust

Süntaksi __getitem__ meetod on järgmine:

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

 

See määrab funktsiooni käitumise ja võtab selle parameetrina indeksi, millele proovite juurde pääseda. Seda meetodit saame kasutada järgmiselt:

my_obj[index] 

 

See tähendab avaldust my_obj.__getitem__(index) kapoti all. Nüüd võite mõelda, kuidas see erineb sisseehitatud seadmest indexer [] operaator? Ükskõik, kus te seda tähistust kasutate, kutsub python automaatselt välja __getitem__ meetod teie jaoks ja on elementidele juurdepääsu stenogramm. Kuid kui soovite kohandatud objektide indekseerimise käitumist muuta, peate selle selgesõnaliselt kutsuma __getitem__ meetod.

Näide nr 01

Alustame kõigepealt lihtsa näitega. Loome õpilaste klassi, kus on kõigi õpilaste nimekiri ja millele pääseme ligi indeksi kaudu ning arvestame, et register esindab nende unikaalset õpilase ID-d.

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

 

Väljund:

 

Nüüd liigume edasi täpsema näite juurde, kus muudame indekseerimiskäitumist, kasutades __getitem__ meetod. Oletame, et mul on stringielementide loend ja ma tahan elemendi hankida iga kord, kui sisestan selle indeksi asukoha, ja saan ka indeksi positsiooni, kui sisestan stringi enda.

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

 

Väljund:

red
green
0 2

See meetod on eksemplari atribuutide kiireks otsimiseks äärmiselt kasulik. Arvestades selle meetodi paindlikkust ja mitmekülgsust, ütleksin, et see on Pythoni üks kõige vähem kasutatud maagilisi meetodeid. Loodan, et teile meeldis selle artikli lugemine ja andke mulle kommentaaride jaotises teada, kui olete huvitatud Pythoni muude võlumeetodite kohta.
 
 
Kanwal Mehreen on ambitsioonikas tarkvaraarendaja, kes tunneb suurt huvi andmeteaduse ja tehisintellekti rakenduste vastu meditsiinis. Kanwal valiti APAC piirkonna Google Generation Scholar 2022 konkursiks. Kanwal armastab jagada tehnilisi teadmisi, kirjutades artikleid trendikatel teemadel, ja on kirglik naiste esindatuse parandamise vastu tehnikatööstuses.
 

Ajatempel:

Veel alates KDnuggets