You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pydantic Dataclass中获取含FieldInfo的字段字典?

获取Pydantic Dataclass的字段信息(类似BaseModel的model_fields)

当使用Pydantic的BaseModel时,类或实例都能通过model_fields属性拿到包含字段名与FieldInfo的字典,但用@dataclass装饰器创建的数据类没有这个属性,你可以通过以下方法获取同结构的字段信息:

方法1:直接访问类的__pydantic_fields__属性

Pydantic dataclass的类本身自带__pydantic_fields__属性,返回结构和BaseModel.model_fields完全一致,类型为dict[str, FieldInfo]。

示例代码:

from pydantic.dataclasses import dataclass
from pydantic import Field

@dataclass
class Person:
    first_name: str = Field(alias='firstName')
    age: int

# 从类获取字段信息
field_info = Person.__pydantic_fields__
print(field_info)

输出结果:

{'first_name': FieldInfo(annotation=str, required=True, alias='firstName', alias_priority=2), 'age': FieldInfo(annotation=int, required=True)}

方法2:从实例间接获取

如果需要从已创建的实例出发,可通过实例的__class__属性访问类的__pydantic_fields__:

p = Person(firstName='John', age=42)
field_info = p.__class__.__pydantic_fields__

这个属性包含的字段信息和BaseModel.model_fields完全匹配,能拿到字段注解、别名、必填状态等所有你需要的FieldInfo内容。

内容的提问来源于stack exchange,提问作者Michal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:12:09