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.