As variaveis constão como não definidas, tanto a Perfil quanto a CreatePerfil
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!
As variaveis constão como não definidas, tanto a Perfil quanto a CreatePerfil
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 |