logo

__getitem__() Python

Python programoje viskas yra objektas. Šiems objektams užkulisiuose yra daug „įprastų“ sistemos iškvietimo metodų, kurių programuotojas nemato. Čia ateina tai, kas vadinama magijos metodai . Magiškieji python metodai yra specialūs metodai, kurie iškviečiami, kai vykdome bet kokį įprastą python kodą. Norėdami atskirti juos nuo įprastų funkcijų, juos supa dvigubi apatiniai brūkšniai.

Jei norime pridėti a ir b, rašome tokią sintaksę:

 c = a + b>

Viduje jis vadinamas taip:



 c = a.__add__(b)>

__getitem__()>yra magiškas Python metodas, kuris, kai naudojamas klasėje, leidžia savo egzemplioriams naudoti[]>(indeksuotojo) operatoriai. Pasakykite, kad x yra šios klasės pavyzdysx[i]>yra maždaug lygiavertistype(x).__getitem__(x, i)>.

Metodas__getitem__(self, key)>apibrėžia elgesį, kai pasiekiamas elementas, naudojant žymėjimąself[key]>. Tai taip pat yra keičiamo ir nekeičiamo konteinerio protokolų dalis.

Pavyzdys:


java eilučių sujungimas



Armstrongo numeris

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

>

>

Išvestis:

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

Skirtingai nuo kai kurių kitų kalbų, „Python“ iš esmės leidžia perduoti bet kokį objektą į indeksavimo priemonę. Galite nustebti, kadtest[1, 'x', 10.0]>iš tikrųjų analizuoja. Python interpretatoriui ši išraiška yra lygiavertė:test.__getitem__((1, 'x', 10.0))>. Kaip matote, 1, 'x', 10.0 dalis yra netiesiogiai išanalizuota kaip eilutė. Thetest[5:65:5]>išraiška naudoja Python pjūvio sintaksę. Tai atitinka šią išraišką: testas[slice(5, 65, 5)].

The__getitem__>magic metodas paprastai naudojamas sąrašo indeksavimui, žodyno paieškai arba prieigai prie reikšmių diapazonų. Atsižvelgiant į tai, koks jis universalus, tai tikriausiai yra vienas iš labiausiai nepakankamai naudojamų Python magiškų metodų.