哪种类型提示表示属性不能是 None?

Which type hint expresses that an attribute must not be None?

在下面的代码中,我需要将 my_attr 声明为 except 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 之后实现,该版本应该会在接下来的几天内发布。参见 samuelcolvin/pydantic#1031