En Python, todo es un objeto. Hay muchos métodos de llamada al sistema ‘ordinarios’ en estos objetos detrás de la escena que no son visibles para el programador. Aquí vienen los llamados métodos mágicos . Los métodos mágicos en python son métodos especiales que se invocan cuando ejecutamos cualquier código ordinario de python. Para diferenciarlos con las funciones normales, tienen guiones bajos dobles alrededor.
Si queremos sumar a y b, escribimos la siguiente sintaxis:
c = a + b
Internamente se llama como:
c = a.__add__(b)
__getitem__()
es un método mágico en Python, que cuando se usa en una clase, permite que sus instancias usen los []
operadores (indexadores). Digamos que x es una instancia de esta clase, entonces x[i]
es más o menos equivalente a type(x).__getitem__(x, i)
.
El método __getitem__(self, key)
define el comportamiento cuando se accede a un elemento, utilizando la notación self[key]
. Esto también es parte de los protocolos de contenedores mutables e inmutables.
Ejemplo:
# 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['GeeksforGeeks'] test[1, 'x', 10.0] test['a':'z':2] test[object()]
Producción:
<class 'int'> 5 <class 'slice'> slice(5, 65, 5) <class 'str'> GeeksforGeeks <class 'tuple'> (1, 'x', 10.0) <class 'slice'> slice('a', 'z', 2) <class 'object'> <object object at 0x7f75bcd6d0a0>
A diferencia de otros lenguajes, Python básicamente le permite pasar cualquier objeto al indexador. Puede que se sorprenda de que test[1, 'x', 10.0]
realmente analiza. Para el intérprete de Python, esa expresión es equivalente a esto: test.__getitem__((1, 'x', 10.0))
. Como puede ver, la parte 1, ‘x’, 10.0 se analiza implícitamente como una tupla. La test[5:65:5]
expresión hace uso de la sintaxis de división de Python. Es equivalente a esta expresión: test[slice(5, 65, 5)].
El __getitem__
método mágico generalmente se usa para la indexación de listas, la búsqueda de diccionarios o el acceso a rangos de valores. Teniendo en cuenta lo versátil que es, probablemente sea uno de los métodos mágicos más infrautilizados de Python.
Publicación traducida automáticamente
Artículo escrito por vanigupta20024 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA