Introducción a __getitem__: un método mágico en Python

Introducción a __getitem__: un método mágico en Python

Nodo de origen: 2011206

Introducción a __getitem__: un método mágico en Python
Imagen del autor

Python es un lenguaje mágico con muchos conceptos con los que incluso los usuarios avanzados pueden no estar familiarizados. Los métodos Dunder o Magical es uno de ellos. Los métodos mágicos son métodos especiales que están rodeados por guiones bajos dobles. No se llaman explícitamente a diferencia de los métodos ordinarios en python. Uno de esos métodos mágicos es el __getitem__ método, lo que permite que los objetos de Python se comporten como secuencias o contenedores, por ejemplo, listas, diccionarios y tuplas. Toma el índice o segmento y recupera su valor asociado de la colección. Se invoca automáticamente cada vez que usamos el indexer [ ] operador para acceder a los elementos dentro de su objeto.

Piense en este método como una varita mágica que le otorga el poder de extraer la información requerida con solo escribir unas pocas líneas de código. ¿Interesante verdad? Este método también se usa ampliamente en el análisis de datos y el aprendizaje automático. Entonces, profundicemos más en el __getitem__ y descubre su poder y flexibilidad.

Quiero que comprenda que su deber como programador de Python es más que solo escribir código funcional. Su código debe ser eficiente, legible y mantenible. Usando __getitem__ le ayudará a lograr estos objetivos. Aquí hay algunos otros beneficios de usar este método mágico:

  • Reduce el uso de la memoria al permitirle extraer solo la información esencial en lugar de cargar la estructura de datos completa en la memoria
  • Proporciona una mayor flexibilidad en la forma en que se manejan y manipulan los datos.
  • Le permite iterar sobre la colección sin recorrer los datos
  • Mejora la funcionalidad al permitirle escribir indexación avanzada que puede no ser posible con los tipos incorporados
  • Simplifica el código ya que utiliza la notación familiar

La sintaxis para el __getitem__ método es el siguiente:

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

 

Define el comportamiento de la función y toma el índice al que intenta acceder en su parámetro. Podemos usar este método así:

my_obj[index] 

 

Esto se traduce en la declaración my_obj.__getitem__(index) bajo el capó. Ahora puede pensar en qué se diferencia del sistema integrado indexer [] ¿operador? Dondequiera que use esta notación, python llama automáticamente al __getitem__ método para usted y es la abreviatura para acceder a los elementos. Pero si desea cambiar el comportamiento de la indexación de objetos personalizados, debe llamar explícitamente al __getitem__ método.

Ejemplo #01

Comencemos con un ejemplo fácil primero. Crearemos una clase de Estudiante que tendrá la lista de todos los estudiantes y podemos acceder a ellos por índice y considerar que el índice representa su ID de estudiante único.

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

 

Salida:

 

Ahora pasaremos a un ejemplo avanzado donde cambiaremos el comportamiento de indexación usando el __getitem__ método. Supongamos que tengo una lista de elementos de cadena y quiero recuperar el elemento cada vez que ingreso su posición de índice y también puedo obtener la posición de índice si ingreso la cadena misma.

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']) 

 

Salida:

red
green
0 2

Este método es extremadamente útil para la búsqueda rápida de los atributos de la instancia. Teniendo en cuenta la flexibilidad y versatilidad de este método, diría que es uno de los métodos mágicos de Python menos utilizados. Espero que hayas disfrutado leyendo este artículo y déjame saber en la sección de comentarios si estás interesado en conocer los otros métodos mágicos en Python.
 
 
Kanwal Mehreen es un aspirante a desarrollador de software con un gran interés en la ciencia de datos y las aplicaciones de IA en medicina. Kanwal fue seleccionado como Google Generation Scholar 2022 para la región APAC. A Kanwal le encanta compartir conocimientos técnicos escribiendo artículos sobre temas de actualidad y le apasiona mejorar la representación de las mujeres en la industria tecnológica.
 

Sello de tiempo:

Mas de nuggets