logo

__getitem__() i Python

I Python är allt ett objekt. Det finns många 'vanliga' systemanropsmetoder på dessa objekt bakom scenen som inte är synliga för programmeraren. Här kommer vad som kallas som magiska metoder . Magiska metoder i python är speciella metoder som anropas när vi kör vilken vanlig pythonkod som helst. För att särskilja dem med normala funktioner har de omgivande dubbla understreck.

Om vi ​​vill lägga till a och b skriver vi följande syntax:



 c = a + b>

Internt kallas det så här:

 c = a.__add__(b)>

__getitem__()>är en magisk metod i Python, som när den används i en klass tillåter sina instanser att använda[]>(indexerare) operatörer. Säg att x är en instans av den här klassenx[i]>motsvarar ungefärtype(x).__getitem__(x, i)>.

Metoden__getitem__(self, key)>definierar beteende för när ett objekt nås med hjälp av notationenself[key]>. Detta är också en del av både det föränderliga och oföränderliga behållarprotokollet.



Exempel:




java listbox



vad är måtten på min datorskärm

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

>

>

Produktion:

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

Till skillnad från vissa andra språk låter Python dig i princip skicka vilket objekt som helst till indexeraren. Du kan bli förvånad över atttest[1, 'x', 10.0]>faktiskt analyserar. För Python-tolken är det uttrycket likvärdigt med detta:test.__getitem__((1, 'x', 10.0))>. Som du kan se är 1, 'x', 10.0-delen implicit tolkad som en tupel. Detest[5:65:5]>expression använder sig av Pythons skivsyntax. Det motsvarar detta uttryck: test[slice(5, 65, 5)].

De__getitem__>Den magiska metoden används vanligtvis för listindexering, ordbokssökning eller åtkomst av värdeintervall. Med tanke på hur mångsidig den är, är det förmodligen en av Pythons mest underutnyttjade magiska metoder.