Introdução a __getitem__: um método mágico em Python

Introdução a __getitem__: um método mágico em Python

Nó Fonte: 2011206

Introdução a __getitem__: um método mágico em Python
Imagem do autor

Python é uma linguagem mágica com muitos conceitos com os quais até mesmo usuários avançados podem não estar familiarizados. Dunder ou métodos mágicos é um deles. Métodos mágicos são métodos especiais cercados por sublinhados duplos. Eles não são chamados explicitamente ao contrário dos métodos comuns em python. Um desses métodos mágicos é o __getitem__ método, permitindo que os objetos Python se comportem como sequências ou contêineres, por exemplo, listas, dicionários e tuplas. Ele pega o índice ou fatia e recupera seu valor associado da coleção. É invocado automaticamente sempre que usamos o indexer [ ] operador para acessar os elementos dentro do seu objeto.

Pense neste método como uma varinha mágica que lhe concede o poder de extrair as informações necessárias apenas escrevendo algumas linhas de código. Interessante certo? Este método também é amplamente utilizado em análise de dados e aprendizado de máquina. Então, vamos mergulhar mais fundo no __getitem__ método e descubra seu poder e flexibilidade.

Quero que você entenda que seu dever como programador Python é mais do que apenas escrever código funcional. Seu código deve ser eficiente, legível e de fácil manutenção. Usando __getitem__ irá ajudá-lo a alcançar esses objetivos. Aqui estão alguns outros benefícios de usar este método mágico:

  • Reduz o uso de memória, permitindo que você extraia apenas as informações essenciais em vez de carregar a estrutura de dados completa na memória
  • Fornece maior flexibilidade em como os dados são tratados e manipulados
  • Permite iterar sobre a coleção sem repetir os dados
  • Aprimora a funcionalidade permitindo que você escreva indexação avançada que pode não ser possível com os tipos integrados
  • Simplifica o código, pois usa a notação familiar

A sintaxe para o __getitem__ método é o seguinte:

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

 

Ele define o comportamento da função e pega em seu parâmetro o índice que você está tentando acessar. Podemos usar este método assim:

my_obj[index] 

 

Isso se traduz na afirmação my_obj.__getitem__(index) sob o capô. Agora você pode pensar que como é diferente do built-in indexer [] operador? Onde quer que você use essa notação, o python chama automaticamente o __getitem__ método para você e é a abreviação para acessar elementos. Mas se você quiser alterar o comportamento da indexação de objetos personalizados, precisará chamar explicitamente o método __getitem__ método.

Exemplo #01

Vamos começar com um exemplo fácil primeiro. Vamos criar uma classe Aluno que terá a lista de todos os alunos e podemos acessá-los por índice e considerar que o índice representa a identificação única do aluno.

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

 

Saída:

 

Agora passaremos para um exemplo avançado onde mudaremos o comportamento de indexação usando o __getitem__ método. Suponha que eu tenha uma lista de elementos de string e queira recuperar o elemento sempre que inserir sua posição de índice e também posso obter a posição de índice se inserir a própria string.

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

 

Saída:

red
green
0 2

Este método é extremamente útil para a consulta rápida dos atributos da instância. Considerando a flexibilidade e versatilidade deste método, eu diria que este é um dos métodos mágicos mais subutilizados do Python. Espero que tenha gostado de ler este artigo e deixe-me saber na seção de comentários se estiver interessado em saber sobre os outros métodos mágicos em Python.
 
 
Kanwal Mehreen é um aspirante a desenvolvedor de software com grande interesse em ciência de dados e aplicações de IA na medicina. Kanwal foi selecionado como o Google Generation Scholar 2022 para a região APAC. Kanwal adora compartilhar conhecimento técnico escrevendo artigos sobre tópicos de tendências e é apaixonado por melhorar a representação das mulheres na indústria de tecnologia.
 

Carimbo de hora:

Mais de KDnuggetsGenericName