Pular para o conteúdo

Como Usar Named Tuple no Python?

CodeMDD.io

Escrever Código Pythonico e Limpo com named tuple

A função namedtuple() do módulo collections do Python é especialmente projetada para tornar seu código mais Pythonico ao trabalhar com tuplas. Com namedtuple(), você pode criar tipos de sequência imutáveis que permitem acessar seus valores usando nomes descritivos de campo e a notação de ponto, em vez de índices inteiros.

Se você tem alguma experiência em usar Python, então conhece a importância de escrever código Pythonico. Neste tutorial, você vai aprimorar essa habilidade usando namedtuple.

Neste tutorial, você aprenderá a:

  • Criar classes namedtuple usando a função namedtuple()
  • Identificar e aproveitar os recursos interessantes do namedtuple
  • Usar instâncias de namedtuple para escrever código Pythonico
  • Decidir se deve usar um namedtuple ou outra estrutura de dados similar
  • Subclassear um namedtuple para fornecer novos recursos

Para aproveitar ao máximo este tutorial, é preciso ter uma compreensão geral da filosofia do Python relacionada a escrever código Pythonico e legível. Você também precisa conhecer os conceitos básicos de trabalho com:

  • Tuplas
  • Dicionários
  • Classes e programação orientada a objetos
  • Classes de dados
  • Anotações de tipo

Se você não tem todos os conhecimentos necessários antes de começar este tutorial, não se preocupe! Você pode pausar e revisar os recursos mencionados conforme necessário.

Usando namedtuple para escrever código Pythonico

A primeira coisa que você precisa fazer é importar a função namedtuple do módulo collections. Veja o exemplo abaixo:

from collections import namedtuple

Em seguida, você pode usar a função namedtuple para criar uma classe namedtuple. A sintaxe básica é a seguinte:

NomeDaClasse = namedtuple('NomeDaClasse', ['campo1', 'campo2', 'campo3'])

Substitua NomeDaClasse pelo nome que você deseja dar à sua classe namedtuple. Em seguida, adicione uma lista de campos que deseja que sua classe namedtuple tenha.

Vamos ver um exemplo de criação de uma classe namedtuple chamada Pessoa com os campos nome, idade e cidade:

from collections import namedtuple
Pessoa = namedtuple('Pessoa', ['nome', 'idade', 'cidade'])

Agora, você pode criar instâncias da classe Pessoa usando a notação de ponto para atribuir valores aos campos. Veja o exemplo abaixo:

pessoa1 = Pessoa(nome='João', idade=25, cidade='São Paulo')
pessoa2 = Pessoa(nome='Maria', idade=30, cidade='Rio de Janeiro')

Você pode acessar os valores dos campos usando a notação de ponto. Por exemplo:

print(pessoa1.nome) # Saída: João
print(pessoa2.idade) # Saída: 30

Criar e utilizar uma classe namedtuple é tão simples quanto isso! Você pode usar essas classes em seu código Python para tornar seu código mais Pythonico e legível.

Criando classes semelhantes a tuplas com namedtuple()

Você também pode criar classes semelhantes a tuplas usando namedtuple(). A diferença é que as classes semelhantes a tuplas não têm nomes de campo explícitos. Em vez disso, os campos são indexados numericamente.

Para criar uma classe semelhante a uma tupla, você precisa fornecer o nome da classe e o número de campos como argumentos para a função namedtuple(). Consulte o exemplo abaixo:

from collections import namedtuple
ClasseSemelhanteATupla = namedtuple('ClasseSemelhanteATupla', ['campo1', 'campo2', 'campo3'])

Neste exemplo, estamos criando uma classe semelhante a uma tupla chamada ClasseSemelhanteATupla com três campos.

Você pode criar instâncias dessa classe semelhante a uma tupla e acessar os valores dos campos usando a notação de indexação numérica. Veja o exemplo abaixo:

instancia1 = ClasseSemelhanteATupla('valor1', 'valor2', 'valor3')
instancia2 = ClasseSemelhanteATupla('valor4', 'valor5', 'valor6')
print(instancia1[0]) # Saída: valor1
print(instancia2[2]) # Saída: valor6

Embora essa abordagem seja útil, usar namedtuple() com nomes explícitos de campo é geralmente mais Pythonico e legível, pois os campos têm nomes descritivos.