在设置值时验证 Pydantic 字段
Validating Pydantic field while setting value
如果提供的值超出指定范围,则无法初始化具有 confloat
字段的 Pydantic class。但是在后期设置此字段时 (my_object.constrained_field = <big_value>
) 新值未验证。
from pydantic import BaseModel, confloat
class testClass(BaseModel):
a: confloat(gt=0.0, lt=10.0)
x = testClass(a=2.0) # OK
# x = testClass(a=20.0) # ERROR: outside limits
x.a = 40.0 # OK despite outside limits
print(x.a) # prints '40.0'
是否可以在设置成员时验证新值,以便在上面的示例中调用 x.a = 40.0
会引发异常?
如果不是-是否有任何解决方法,例如从 class 字段中获取验证器方法?
在 Config 上使用 validate_assignment
。
如果提供的值超出指定范围,则无法初始化具有 confloat
字段的 Pydantic class。但是在后期设置此字段时 (my_object.constrained_field = <big_value>
) 新值未验证。
from pydantic import BaseModel, confloat
class testClass(BaseModel):
a: confloat(gt=0.0, lt=10.0)
x = testClass(a=2.0) # OK
# x = testClass(a=20.0) # ERROR: outside limits
x.a = 40.0 # OK despite outside limits
print(x.a) # prints '40.0'
是否可以在设置成员时验证新值,以便在上面的示例中调用 x.a = 40.0
会引发异常?
如果不是-是否有任何解决方法,例如从 class 字段中获取验证器方法?
在 Config 上使用 validate_assignment
。