首页 > 解决方案 > 具有默认值的 Pydantic 字段?

问题描述

假设我有以下单例:

from typing import Union, TypeVar
from typing import Literal
from pydantic import BaseModel


class UnidentifiedType(BaseModel):
    _instance = None

    def __init__(self):
        if UnidentifiedType._instance is None:
            Unidentified._instance = self

    @property
    def instance(self):
        if self._instance is None:
            UnidentifiedType()
        return self._instance

Unidentified = UnidentifiedType.instance

然后我输入以下别名:

Identifiable = Union[Literal[Unidentified], TypeVar("T")]

我已经知道我可以制作一个模型并给一个字段bar一个默认值,Unidentified如下所示:

class foo(BaseModel):
    bar: Identifiable[str] = Unidentified

但是我如何使任何类型为 Indentifiable[something] 的字段的默认值为Unidentified

换句话说,有没有办法:

class foo(BaseModel):
    bar: Identifiable[str]

并且bar仍然有默认值Unidentified

标签: pythonpython-3.xclasstypingpydantic

解决方案


推荐阅读