python - 哪种类型提示表示属性不能为 None?

标签 python type-hinting pydantic

在下面的代码中,我需要将 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/

相关文章:

python - 如何使用 igraph 获取最短路径上的顶点?

python - 我的错误 : List or tuple literal expected as the second argument to namedtuple()

python-3.x - 固定字符串或任何有效整数的 FastAPI 路径参数验证

pandas - 如何将 FastAPI 中的 Pydantic 模型转换为 Pandas DataFrame?

python - Django 的受限数据库用户

python - GeoDjango 和混合器。 'PointField'没有属性 '_meta'

python-3.x - 在Python中,如何输入提示具有空默认值的列表?

Python 类型提示,可索引对象

python - 如何使用 anchor 将 pydantic 模型导出到 yaml?

python - Django account_activation_token.check_token 在 constant_time_compare() 中总是返回 False