Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

751
Visualizações
¿Cómo dar a un campo de lista de Pydantic un valor predeterminado?

Quiero crear un modelo de Pydantic en el que haya un campo de lista, que dejado sin inicializar tiene un valor predeterminado de una lista vacía. ¿Hay una manera idiomática de hacer esto?

Para los objetos de clase de datos incorporados de Python, puede usar field(default_factory=list) , sin embargo, en mis propios experimentos, esto parece evitar que mis modelos de Pydantic se decapan. Una implementación ingenua podría ser, algo como esto:

 from pydantic import BaseModel class Foo(BaseModel): defaulted_list_field: Sequence[str] = [] # Bad!

Pero todos sabemos que no debemos usar un valor mutable como el literal de lista vacía como valor predeterminado.

Entonces, ¿cuál es la forma correcta de dar un valor predeterminado a un campo de lista de Pydantic?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Para pydantic puede usar un valor predeterminado mutable, como:

 class Foo(BaseModel): defaulted_list_field: List[str] = [] f1, f2 = Foo(), Foo() f1.defaulted_list_field.append("hey!") print(f1) # defaulted_list_field=['hey!'] print(f2) # defaulted_list_field=[]

Se manejará correctamente (copia profunda) y cada instancia del modelo tendrá su propia lista vacía.


Pydantic también tiene el parámetro default_factory . En el caso de una lista vacía, el resultado será idéntico, se usa más bien cuando se declara un campo con un valor predeterminado, es posible que desee que sea dinámico (es decir, diferente para cada modelo) .

 from typing import List from pydantic import BaseModel, Field from uuid import UUID, uuid4 class Foo(BaseModel): defaulted_list_field: List[str] = Field(default_factory=list) uid: UUID = Field(default_factory=uuid4)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda