Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

756
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda