无论何时创建/示例化pydantic对象,是否有一种干净的方法来触发函数调用?
目前,我在以下方面“误用”了root_validator
:
from pydantic import BaseModel
class PydanticClass(BaseModel):
name: str
@root_validator()
def on_create(cls, values):
print("Put your logic here!")
return values
因此,在PydanticClass(name="Test")
上执行我的逻辑并简单地返回相同的对象值。
这是可行的,但我有两个问题,这就是为什么我会有兴趣在一个更清洁的解决方案:
1.我基本上不做验证(返回相同的值)。
1.我认为一旦对象发生变化,这个函数也会执行,这是我不希望的。
所以我很乐意了解任何更好的方法/解决方案。
2条答案
按热度按时间xxls0lw81#
您的意图并不完全清楚,但我可以建议使用一个覆盖
__init__
模型方法,在这种情况下,您的代码将在对象示例化时执行一次:o3imoua42#
你可以使用python dataclass
__post_init__
:post_init在
__init__
之后调用一次,因此在对类示例进行更改后不会调用它。