In Python is alles een object. Er zijn achter de schermen veel ‘gewone’ systeemaanroepmethoden op deze objecten die niet zichtbaar zijn voor de programmeur. Hier komen wat genoemd wordt als magische methoden . Magische methoden in Python zijn speciale methoden die worden aangeroepen wanneer we gewone Python-code uitvoeren. Om ze te onderscheiden van normale functies, zijn ze omgeven door dubbele onderstrepingstekens.
Als we a en b willen optellen, schrijven we de volgende syntaxis:
c = a + b>
Intern wordt het genoemd als:
c = a.__add__(b)>
__getitem__()>is een magische methode in Python, die bij gebruik in een klasse ervoor zorgt dat de instanties de[]>(indexer)operatoren. Stel dat x een instantie van deze klasse isx[i]>is ongeveer gelijk aantype(x).__getitem__(x, i)>.
De methode__getitem__(self, key)>definieert het gedrag wanneer een item wordt geopend, met behulp van de notatieself[key]>. Dit maakt ook deel uit van zowel de veranderlijke als de onveranderlijke containerprotocollen.
Voorbeeld:
Avl boom
# 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>()]> |
>
>
Uitgang:
kat timpf gewicht
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2)> In tegenstelling tot sommige andere talen kun je in Python in principe elk object doorgeven aan de indexer. Het zal je misschien verbazen dat detest[1, 'x', 10.0]>eigenlijk parseert. Voor de Python-interpreter is die uitdrukking gelijk aan dit:test.__getitem__((1, 'x', 10.0))>. Zoals u kunt zien, wordt het deel 1, ‘x’, 10.0 impliciet geparseerd als een tupel. Detest[5:65:5]>expressie maakt gebruik van de slice-syntaxis van Python. Het is equivalent aan deze uitdrukking: test[slice(5, 65, 5)].
De__getitem__>De magische methode wordt meestal gebruikt voor het indexeren van lijsten, het opzoeken van woordenboeken of het verkrijgen van toegang tot waardenbereiken. Gezien hoe veelzijdig het is, is het waarschijnlijk een van de meest onderbenutte magische methoden van Python.