tuplas nomeadas em python são uma extensão do tipo de dados de tupla embutido, permitindo que você forneça nomes significativos aos elementos de uma tupla. Em outras palavras, as tuplas denominadas são tuplas com atributos nomeados. Isso não é legal?
eles fazem parte do módulo de coleções e fornecem uma maneira de definir classes simples e imutáveis de uma maneira mais simples.
Espere o que, aulas?
Sim, aulas.
tuplas nomeadas são essencialmente classes imutáveis.
Esta é a mágica que ocorre: quando você cria uma tupla nomeada usando o nome de nome, o resultado não é uma instância da tupla em si, mas uma classe gerada dinamicamente que herda da tupla. Novamente, legal !!
Vamos ver como isso funciona.
from collections import namedtuple P = namedtuple("Point", "x y")
Quando você executa p = nomeado ("ponto", "x y"), você está criando uma nova classe chamada Point (conforme especificado no primeiro argumento para o nome de nomeado).
A função NomeTuple usa o tipo de bastidores para criar dinamicamente uma nova classe chamada Point que herda da tupla. Esta nova classe é armazenada na variável p.
e, como nas classes, o tipo é tipo.
> type(P) class 'type'
> class A: pass > type(A) class 'type'
e que tipo é a instância de um nome de nome?
from collections import namedtuple P = namedtuple("Point", "x y") p = P(1,2) > print(type(p)) class '__main__.Point'
p é uma instância do tipo de ponto. Mas também é uma tupla:
> print(isinstance(p, tuple)) True
Resumindo:
e uma última coisa:
é muito comum nomear a variável nomeada (o que chamamos de P) com o mesmo nome que o nome do tipo (o que chamamos de ponto), a classe criada dinamicamente:
from collections import namedtuple Point = namedtuple("Point", "x y")
usei um nome diferente para deixar claro a distinção entre thw two.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3