Pydantic 中的自定义字典类型

主要观点:介绍利用自定义根类型来完成特定任务,以在工作项目中定义自定义字典类型为例,通过Pydantic实现,探讨不同方法及最终解决方案。
关键信息:

  • 已定义Enum和模型类型,如AnimalSpeciesAnimalData
  • 简单的暴力方法是直接写AnimalDict类,但可能存在添加新字段未同步的问题。
  • 最终解决方案是使用自定义根类型,通过RootModel类重写AnimalDict类,添加模型验证函数check_dictionary_types确保根对象符合模式,可有效验证字典类型。
    重要细节:
  • AnimalSpecies是包含不同动物物种的Enum类型,AnimalData是包含动物物种数据的模型。
  • AnimalDict类通过RootModel类定义,可通过__getitem____setitem__方法访问和设置元素,模型验证函数会在根对象不符合模式时触发类型错误。
  • 示例展示了如何使用AnimalDict类,以及错误示例触发类型错误的情况。
    结论:Pydantic 的自定义根类型为定义和验证复杂类型提供了灵活的解决方案,可在代码库中有效验证自定义字典类型。
阅读 26
0 条评论