Fácil Python
Criando uma dataclass simples
Enunciado
Crie uma dataclass Produto com os campos nome (str) e preco (float). Em seguida, instancie dois produtos e imprima-os. Verifique se a representação automática é gerada.
Requisitos
- Usar o decorador @dataclass
- Definir os campos nome e preco com anotações de tipo
- Criar duas instâncias e imprimir cada uma
Código inicial
from dataclasses import dataclass
# Defina a dataclass Produto aqui
# Crie e imprima dois produtos
Saída esperada
Produto(nome='Caneta', preco=1.5)
Produto(nome='Caderno', preco=12.0)
Ver dica
A dataclass gera automaticamente o método repr, então basta imprimir a instância.
Mostrar solução
from dataclasses import dataclass
@dataclass
class Produto:
nome: str
preco: float
p1 = Produto('Caneta', 1.5)
p2 = Produto('Caderno', 12.0)
print(p1)
print(p2)
Passo a passo
- Importamos
dataclassdo módulodataclasses. - Usamos o decorador
@dataclasspara transformar a classeProdutoem uma dataclass. - Declaramos os campos
nomeeprecocom anotações de tipo (strefloat). - O decorador gera automaticamente
__init__,__repr__e__eq__. - Criamos duas instâncias passando os valores posicionalmente.
- Imprimimos cada instância; o
__repr__mostra os campos de forma legível.
Por que funciona
Dataclasses são uma maneira concisa de criar classes que armazenam dados. O decorador inspeciona os atributos anotados e gera os métodos especiais, evitando código boilerplate. Assim, o foco fica na definição dos dados.
Erros comuns
- Esquecer o decorador
@dataclass: a classe não terá__init__automático e você precisará defini-lo manualmente. - Não anotar os tipos: sem anotações, o decorador não reconhece os campos.
- Usar
listcomo valor padrão diretamente: isso causa erro porque listas são mutáveis. Usefield(default_factory=list).
Outra forma de resolver
Poderia ser uma classe normal com __init__ e __repr__ manuais, mas seria mais verboso.
Saída esperada
Produto(nome='Caneta', preco=1.5)
Produto(nome='Caderno', preco=12.0)