Pythonissa kaikki on objektia. Näissä objekteissa kulissien takana on paljon 'tavallisia' järjestelmäkutsumenetelmiä, jotka eivät ole ohjelmoijan nähtävissä. Tässä tulee mitä kutsutaan maagisia menetelmiä . Pythonin maagiset menetelmät ovat erikoismenetelmiä, joita kutsutaan, kun suoritamme mitä tahansa tavallista python-koodia. Niiden erottamiseksi normaaleista funktioista niitä ympäröi kaksi alaviivaa.
Jos haluamme lisätä a:n ja b:n, kirjoitamme seuraavan syntaksin:
c = a + b>
Sisäisesti sitä kutsutaan nimellä:
c = a.__add__(b)>
__getitem__()>on Pythonin maaginen menetelmä, joka luokassa käytettynä antaa instansseille mahdollisuuden käyttää[]>(indeksoija) operaattorit. Sano sitten, että x on tämän luokan esiintymäx[i]>on suunnilleen sama kuintype(x).__getitem__(x, i)>.
Menetelmä__getitem__(self, key)>määrittää käyttäytymisen, kun kohdetta käytetään, käyttämällä merkintääself[key]>. Tämä on myös osa sekä muuttuvaa että muuttumatonta konttiprotokollia.
10/10
Esimerkki:
mitä pythonissa on
# 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>()]> |
>
sanakirjan alustus c#
>
Lähtö:
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2)> Toisin kuin jotkut muut kielet, Python antaa sinun siirtää minkä tahansa objektin indeksointilaitteeseen. Saatat yllättyä, ettätest[1, 'x', 10.0]>itse asiassa jäsentää. Python-tulkin kannalta tämä lauseke vastaa tätä:test.__getitem__((1, 'x', 10.0))>. Kuten näet, osa 1, 'x', 10.0 jäsennetään implisiittisesti monikkona. Thetest[5:65:5]>lauseke käyttää Pythonin viipalesyntaksia. Se vastaa tätä lauseketta: testi[slice(5, 65, 5)].
The__getitem__>magic-menetelmää käytetään yleensä luetteloiden indeksointiin, sanakirjahakuun tai arvoalueiden hakemiseen. Ottaen huomioon kuinka monipuolinen se on, se on luultavasti yksi Pythonin alihyödyllisimmistä taikamenetelmistä.