Questão 9 · aula @dataclass: menos código, mais intenção
O que o decorador @dataclass gera automaticamente a partir dos campos declarados?
- Apenas um __init__, deixando a representação e a comparação por sua conta.
- O __init__, o __repr__ e o __eq__, cobrindo construção, exibição e comparação.
- Somente o __repr__, para imprimir o objeto de forma mais legível na tela.
- Nada de métodos; ele só valida os tipos dos campos em tempo de execução.
Ver a resposta
Resposta: B. O __init__, o __repr__ e o __eq__, cobrindo construção, exibição e comparação.
A partir dos campos anotados, @dataclass gera o __init__ (construtor), o __repr__ (representação legível) e o __eq__ (comparação por conteúdo). Isso elimina o código repetitivo de uma classe de dados.
Estudar a aula: @dataclass: menos código, mais intenção
Questão 10 · aula field e default_factory: valores mutáveis
Por que se usa field(default_factory=list) em vez de igual a uma lista vazia direto?
- Porque a sintaxe com field roda mais rápido do que uma lista literal vazia.
- Porque a factory cria uma lista nova para cada instância, evitando estado compartilhado.
- Porque o Python não aceita nenhum tipo de valor padrão em campos de dataclass.
- Porque default_factory converte a lista em tupla imutável automaticamente.
Ver a resposta
Resposta: B. Porque a factory cria uma lista nova para cada instância, evitando estado compartilhado.
Uma lista como default direto seria compartilhada entre todas as instâncias, um bug clássico. O default_factory recebe uma função chamada a cada objeto novo, produzindo uma lista independente por instância. Por isso o Python barra o default mutável direto e pede a factory.
Estudar a aula: field e default_factory: valores mutáveis
Questão 11 · aula frozen e __post_init__: imutabilidade e validação
Qual é o papel do __post_init__ numa dataclass?
- Substituir o __init__ gerado por um construtor totalmente escrito à mão.
- Rodar logo após a construção para validar campos ou calcular valores derivados.
- Tornar a classe imutável, impedindo qualquer alteração dos campos depois.
- Gerar o __repr__ e o __eq__ que o decorador não teria criado sozinho.
Ver a resposta
Resposta: B. Rodar logo após a construção para validar campos ou calcular valores derivados.
O __post_init__ é chamado automaticamente logo após o __init__ atribuir os campos. É onde você valida os valores e levanta erro se algo estiver inconsistente, garantindo que o objeto nunca nasça inválido. A imutabilidade é papel do frozen, um recurso separado.
Estudar a aula: frozen e __post_init__: imutabilidade e validação
Questão 12 · aula dataclass, namedtuple, dict e tupla: qual usar
Qual estrutura é a melhor para um registro pequeno, imutável, com campos nomeados e sem métodos?
- Um dicionário, porque aceita qualquer chave a qualquer momento sem restrição.
- Uma namedtuple, que é imutável, leve, nomeia os campos e ainda é uma tupla.
- Uma lista comum, indexada por posição, sem nomes para os campos guardados.
- Uma dataclass mutável e com herança, mesmo sem nenhum método ou validação.
Ver a resposta
Resposta: B. Uma namedtuple, que é imutável, leve, nomeia os campos e ainda é uma tupla.
A namedtuple é ideal para um registro pequeno e fixo: imutável, leve, acessada por nome ou posição e compatível com tuplas. Quando surge necessidade de métodos, padrões ou validação, aí a dataclass passa a valer mais a pena.
Estudar a aula: dataclass, namedtuple, dict e tupla: qual usar
Questão 13 · aula Enum: constantes nomeadas e seguras
Qual a principal vantagem de usar um Enum em vez de textos soltos como pendente e pago?
- O Enum torna o programa mais rápido ao substituir textos por números internos.
- O Enum dá constantes nomeadas e verificáveis; um nome digitado errado gera erro na hora.
- O Enum permite qualquer valor a qualquer momento, sem restringir as opções possíveis.
- O Enum dispensa a necessidade de comparar valores em qualquer parte do código.
Ver a resposta
Resposta: B. O Enum dá constantes nomeadas e verificáveis; um nome digitado errado gera erro na hora.
O Enum troca valores mágicos por constantes nomeadas com significado. Além da legibilidade, ele torna erros de digitação barulhentos: referenciar um membro inexistente gera erro na hora, enquanto um texto solto escrito errado passaria despercebido.
Estudar a aula: Enum: constantes nomeadas e seguras