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ų.