Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Undefined Variavel

As variaveis constão como não definidas, tanto a Perfil quanto a CreatePerfil

1 resposta

Olá, Felipe! Como vai?

Quando as variáveis constam como não definidas, tanto a Perfil quanto a CreatePerfil, o motivo mais comum é que essas classes ainda não foram criadas ou importadas corretamente no arquivo schemas.py. Entender esse comportamento é essencial para evitar erros recorrentes no desenvolvimento com FastAPI e Pydantic.

De acordo com o contexto da sua dúvida, as classes Perfil e PerfilCreate precisam ser definidas antes de serem usadas nas classes Estudante e EstudanteCreate. A ordem de declaração no arquivo importa bastante, pois o Python lê o código de cima para baixo e não reconhece uma classe que ainda não foi apresentada no momento em que ela é referenciada.

Veja um exemplo completo de como organizar essas definições no mesmo arquivo:

from typing import List, Optional
from pydantic import BaseModel

class Perfil(BaseModel):
    id: int
    idade: int
    endereco: str

    class Config:
        from_attributes = True

class PerfilCreate(BaseModel):
    idade: int
    endereco: str

class Estudante(BaseModel):
    id: int
    nome: str
    perfil: Optional[Perfil] = None

    class Config:
        from_attributes = True

class EstudanteCreate(BaseModel):
    nome: str
    email: str
    perfil: PerfilCreate

Certifique-se de que essas definições estão no seu arquivo schemas.py exatamente nessa ordem. Dessa forma, quando você referenciar Perfil e PerfilCreate nas classes Estudante e EstudanteCreate, elas já estarão devidamente definidas e o erro de variável undefined não ocorrerá mais.

Uma dica importante é sempre revisar as importações no topo do arquivo, pois um simples esquecimento pode gerar esse tipo de problema de forma silenciosa.

Você conseguiu identificar em qual parte do arquivo as classes estavam fora de ordem ou o problema era mesmo a ausência das definições?

Conteúdos relacionados
Como criar APIs em Python usando FastAPI
Python datetime: Lidando com datas e horários
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.