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

如何在实例化Pydantic对象时自动触发函数?求更优实现方案

方案1:通用方案(适配Pydantic v1、v2全版本)

直接重写模型的__init__方法,在调用父类初始化逻辑后执行你需要的自定义逻辑,该逻辑只会在实例创建时触发,后续修改对象属性不会执行:

from pydantic import BaseModel

class PydanticClass(BaseModel):
    name: str

    def __init__(self, **kwargs):
        # 先执行Pydantic原生的初始化校验逻辑
        super().__init__(**kwargs)
        # 下方写你需要执行的自定义逻辑
        print("Put your logic here!")

方案2:Pydantic v2 专属优雅方案

Pydantic v2 官方提供了@model_post_init装饰器,专门用于定义模型实例化完成后需要执行的逻辑,完全符合你的使用场景,没有误用校验器的问题:

from pydantic import BaseModel, model_post_init

class PydanticClass(BaseModel):
    name: str

    @model_post_init
    def run_after_init(self):
        # 自定义逻辑仅在实例创建时执行一次
        print("Put your logic here!")

两种方案都可以解决你之前遇到的两个问题:

  • 没有误用校验器能力,两种写法都是官方推荐的自定义初始化逻辑实现方式
  • 逻辑仅在实例化时执行,后续修改对象属性、调用对象更新/复制方法都不会重复触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:27:03