Python versijā viss ir objekts. Šiem objektiem aiz ainas ir daudz “parasto” sistēmas izsaukuma metožu, kuras programmētājs neredz. Šeit nāk tas, ko sauc par burvju metodes . Maģiskās metodes python ir īpašas metodes, kas tiek izsauktas, kad mēs palaižam jebkuru parasto python kodu. Lai tos atšķirtu no parastajām funkcijām, tiem ir apkārtējās dubultās pasvītras.
Ja vēlamies pievienot a un b, mēs rakstām šādu sintaksi:
c = a + b>
Iekšēji to sauc šādi:
c = a.__add__(b)>
__getitem__()>ir maģiska metode Python, kas, izmantojot klasē, ļauj tās gadījumiem izmantot[]>(indeksētāja) operatori. Sakiet, ka x ir šīs klases gadījumsx[i]>ir aptuveni līdzvērtīgstype(x).__getitem__(x, i)>.
abstraktas metodes
Metode__getitem__(self, key)>definē uzvedību, kad tiek piekļūts vienumam, izmantojot apzīmējumuself[key]>. Tas ir arī daļa no mainīgā un nemainīgā konteinera protokola.
Piemērs:
java pamati
# 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>()]> |
stāvus
>
>
Izvade:
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2)> Atšķirībā no dažām citām valodām, Python pamatā ļauj indeksētājam nodot jebkuru objektu. Jūs varat būt pārsteigts, katest[1, 'x', 10.0]>faktiski parsē. Python tulkam šī izteiksme ir līdzvērtīga šim:test.__getitem__((1, 'x', 10.0))>. Kā redzat, daļa 1, “x”, 10.0 tiek netieši parsēta kā kortežs. Thetest[5:65:5]>izteiksme izmanto Python šķēluma sintaksi. Tas ir līdzvērtīgs šai izteiksmei: test[slice(5, 65, 5)].
The__getitem__>burvju metodi parasti izmanto sarakstu indeksēšanai, vārdnīcas meklēšanai vai vērtību diapazonu piekļuvei. Ņemot vērā to, cik tas ir daudzpusīgs, tā, iespējams, ir viena no Python visvairāk neizmantotajām maģijas metodēm.