Inleiding tot __getitem__: een magische methode in Python

Inleiding tot __getitem__: een magische methode in Python

Bronknooppunt: 2011206

Inleiding tot __getitem__: een magische methode in Python
Afbeelding door auteur

Python is een magische taal met veel concepten waar zelfs gevorderde gebruikers misschien niet bekend mee zijn. Dunder of magische methoden is er een van. Magische methoden zijn speciale methoden die worden omgeven door dubbele onderstrepingstekens. Ze worden niet expliciet genoemd, in tegenstelling tot de gewone methoden in python. Een van die magische methoden is de __getitem__ methode, waardoor de Python-objecten zich kunnen gedragen als reeksen of containers, bijvoorbeeld lijsten, woordenboeken en tupels. Het neemt de index of het segment en haalt de bijbehorende waarde op uit de verzameling. Het wordt automatisch aangeroepen wanneer we de indexer [ ] operator om toegang te krijgen tot de elementen binnen uw object.

Zie deze methode als een toverstaf die je de kracht geeft om de vereiste informatie te extraheren door slechts een paar regels code te schrijven. Interessant toch? Deze methode wordt ook veel gebruikt in data-analyse en machine learning. Laten we dus dieper in de __getitem__ methode en ontdek de kracht en flexibiliteit ervan.

Ik wil dat je begrijpt dat je taak als Python-programmeur meer is dan alleen het schrijven van functionele code. Uw code moet efficiënt, leesbaar en onderhoudbaar zijn. Gebruik makend van __getitem__ zal u helpen deze doelen te bereiken. Hier zijn enkele andere voordelen van het gebruik van deze magische methode:

  • Vermindert het geheugengebruik doordat u alleen de essentiële informatie kunt extraheren in plaats van de volledige gegevensstructuur in het geheugen te laden
  • Biedt meer flexibiliteit in de manier waarop de gegevens worden behandeld en gemanipuleerd
  • Hiermee kunt u de verzameling herhalen zonder de gegevens te herhalen
  • Verbetert de functionaliteit doordat u geavanceerde indexering kunt schrijven die mogelijk niet mogelijk is met de ingebouwde typen
  • Vereenvoudigt de code omdat deze de bekende notatie gebruikt

De syntaxis voor de __getitem__ methode is als volgt:

def __getitem__(self, index): # Your Implementation pass

 

Het definieert het gedrag van de functie en neemt de index waartoe u toegang probeert te krijgen in zijn parameter. We kunnen deze methode als volgt gebruiken:

my_obj[index] 

 

Dit vertaalt zich naar de verklaring my_obj.__getitem__(index) onder de motorkap. Nu zou je kunnen denken dat hoe verschilt het van de ingebouwde indexer [] exploitant? Waar u deze notatie ook gebruikt, python roept automatisch de __getitem__ methode voor u en is de afkorting voor toegang tot elementen. Maar als u het gedrag van indexering voor aangepaste objecten wilt wijzigen, moet u expliciet de __getitem__ methode.

voorbeeld #01

Laten we eerst beginnen met een eenvoudig voorbeeld. We zullen een studentenklas maken met de lijst van alle studenten en we hebben toegang tot hen via index en gaan ervan uit dat de index hun unieke student-ID vertegenwoordigt.

class Student: def __init__(self, names): self.names=names def __getitem__(self,index): return self.names[index] section_A= Student(["David", "Elsa", "Qasim"])
print(section_A[2])

 

Output:

 

Nu gaan we over naar een geavanceerd voorbeeld waarin we het indexeringsgedrag zullen wijzigen met behulp van de __getitem__ methode. Stel dat ik een lijst met stringelementen heb en ik wil het element ophalen wanneer ik zijn indexpositie invoer en ik kan ook de indexpositie krijgen als ik de string zelf invoer.

class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): if isinstance(index, int): return self.items[index] elif isinstance(index, str): return self.items.index(index) else: raise TypeError("Invalid Argument Type") my_list = MyList(['red', 'blue', 'green', 'black']) # Indexing with integer keys
print(my_list[0]) print(my_list[2]) # Indexing with string keys
print(my_list['red']) print(my_list['green']) 

 

Output:

red
green
0 2

Deze methode is uitermate handig voor het snel opzoeken van de instantieattributen. Gezien de flexibiliteit en veelzijdigheid van deze methode, zou ik zeggen dat dit een van de meest onderbenutte magische methoden van Python is. Ik hoop dat je dit artikel met plezier hebt gelezen en laat het me weten in het commentaargedeelte als je meer wilt weten over de andere magische methoden in Python.
 
 
Kanwal Mehreen is een aspirant-softwareontwikkelaar met een grote interesse in datawetenschap en toepassingen van AI in de geneeskunde. Kanwal werd geselecteerd als de Google Generation Scholar 2022 voor de APAC-regio. Kanwal deelt graag technische kennis door artikelen te schrijven over trending topics en heeft een passie voor het verbeteren van de vertegenwoordiging van vrouwen in de technische industrie.
 

Tijdstempel:

Meer van KDnuggets