__getitem__() programmā Python

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ījums x[i]> ir aptuveni līdzvērtīgs type(x).__getitem__(x, i)> .

Metode __getitem__(self, key)> definē uzvedību, kad tiek piekļūts vienumam, izmantojot apzīmējumu self[key]> . Tas ir arī daļa no mainīgā un nemainīgā konteinera protokola.

Piemērs:




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

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, ka test[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. The test[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.