Aula: Implementação de Classes de Dados em Python
Aula: Implementação de Classes de Dados em Python (Iniciante)
Objetivos de Aprendizagem
- Entender o conceito de classe de dados (data class).
- Criar e usar classes simples em Python.
- Utilizar o decorador
@dataclass para simplificar o código.
- Comparar a implementação manual com a automática via
dataclasses.
1. Introdução ao Conceito de Classe de Dados
Uma classe de dados é uma estrutura usada para armazenar informações com pouca ou nenhuma lógica. Ideal para representar entidades simples como pessoas, produtos ou veículos. Em vez de usar tuplas ou dicionários, classes trazem organização, clareza e permitem validações e métodos próprios.
2. Revisão rápida: classes simples em Python
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
p1 = Pessoa("Ana", 25)
print(p1.nome) # Saída: Ana
print(p1.idade) # Saída: 25
Esse tipo de classe exige código repetitivo. Para simplificar, usamos dataclasses.
3. Introdução ao módulo dataclasses
from dataclasses import dataclass
@dataclass
class Pessoa:
nome: str
idade: int
p1 = Pessoa("Ana", 25)
print(p1) # Saída: Pessoa(nome='Ana', idade=25)
O decorador @dataclass gera automaticamente o construtor, __repr__, __eq__ e outros métodos úteis.
4. Recursos úteis das dataclasses
a) Valores padrão
@dataclass
class Produto:
nome: str
preco: float = 0.0
p = Produto("Camiseta")
print(p) # Produto(nome='Camiseta', preco=0.0)
b) Comparação automática
p1 = Produto("Caneta", 2.0)
p2 = Produto("Caneta", 2.0)
print(p1 == p2) # True
c) Campos imutáveis (read-only)
from dataclasses import dataclass
@dataclass(frozen=True)
class Coordenada:
x: int
y: int
ponto = Coordenada(3, 4)
# ponto.x = 5 # ❌ Erro: objeto imutável
d) Campos com configuração avançada
from dataclasses import dataclass, field
@dataclass
class Aluno:
nome: str
notas: list = field(default_factory=list)
a = Aluno("João")
a.notas.append(10)
print(a) # Aluno(nome='João', notas=[10])
5. Discussão
- Quando vale a pena usar uma dataclass?
- Quais vantagens ela traz em relação às classes comuns?
- Quando não é indicado (ex.: muita lógica interna, não apenas dados)?
6. Resumo da Aula
| Conceito | Explicação |
| Classe comum | Requer métodos manuais |
@dataclass | Gera métodos automáticos |
field() | Controla campos e valores padrão |
frozen=True | Torna a classe imutável |
| Uso ideal | Representação simples de dados |
Conteúdo gerado pelo assistente — peça se quiser que eu converta isso para PDF ou adicione slides.