在下面的代码中,我需要将 my_attr
声明为 除了 None
之外的任何内容。
我应该用 Any
交换什么?
from pydantic import BaseModel
from typing import Any
class MyClass(BaseModel):
my_attr: Any
最佳答案
要实现此目的,您需要使用验证器,例如:
from pydantic import BaseModel, validator
class MyClass(BaseModel):
my_attr: Any
@validator('my_attr', always=True)
def check_not_none(cls, value):
assert value is not None, 'may not be None'
return value
但这不太可能是您真正想要的,您最好使用联合并包含您允许的类型的详尽列表,例如Union[str、bytes、int、float、Decimal、datetime、date、list、dict、...]
。
如果您只是想让该字段成为必填字段(但 None
仍然是允许的值),那么在 v1.2 之后应该可以实现,v1.2 应该会在接下来的几天内发布。请参阅samuelcolvin/pydantic#1031 .
关于python - 哪种类型提示表示属性不能为 None?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59073717/