跳到内容

别名

对别名配置的支持。

AliasPath dataclass

AliasPath(first_arg: str, *args: str | int)

一个数据类,被 validation_alias 用作创建别名的便捷方式。

属性

名称 类型 描述
path list[int | str]

字符串或整数别名列表。

源代码位于 pydantic/aliases.py
28
29
def __init__(self, first_arg: str, *args: str | int) -> None:
    self.path = [first_arg] + list(args)

convert_to_aliases

convert_to_aliases() -> list[str | int]

将参数转换为字符串或整数别名列表。

返回

类型 描述
list[str | int]

别名列表。

源代码位于 pydantic/aliases.py
31
32
33
34
35
36
37
def convert_to_aliases(self) -> list[str | int]:
    """Converts arguments to a list of string or integer aliases.

    Returns:
        The list of aliases.
    """
    return self.path

search_dict_for_path

search_dict_for_path(d: dict) -> Any

在字典中搜索别名指定的路径。

返回

类型 描述
Any

指定路径的值,如果未找到路径,则为 PydanticUndefined

源代码位于 pydantic/aliases.py
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
def search_dict_for_path(self, d: dict) -> Any:
    """Searches a dictionary for the path specified by the alias.

    Returns:
        The value at the specified path, or `PydanticUndefined` if the path is not found.
    """
    v = d
    for k in self.path:
        if isinstance(v, str):
            # disallow indexing into a str, like for AliasPath('x', 0) and x='abc'
            return PydanticUndefined
        try:
            v = v[k]
        except (KeyError, IndexError, TypeError):
            return PydanticUndefined
    return v

AliasChoices dataclass

AliasChoices(
    first_choice: str | AliasPath, *choices: str | AliasPath
)

一个数据类,被 validation_alias 用作创建别名的便捷方式。

属性

名称 类型 描述
choices list[str | AliasPath]

包含字符串或 AliasPath 的列表。

源代码位于 pydantic/aliases.py
70
71
def __init__(self, first_choice: str | AliasPath, *choices: str | AliasPath) -> None:
    self.choices = [first_choice] + list(choices)

convert_to_aliases

convert_to_aliases() -> list[list[str | int]]

将参数转换为包含字符串或整数别名列表的列表。

返回

类型 描述
list[list[str | int]]

别名列表。

源代码位于 pydantic/aliases.py
73
74
75
76
77
78
79
80
81
82
83
84
85
def convert_to_aliases(self) -> list[list[str | int]]:
    """Converts arguments to a list of lists containing string or integer aliases.

    Returns:
        The list of aliases.
    """
    aliases: list[list[str | int]] = []
    for c in self.choices:
        if isinstance(c, AliasPath):
            aliases.append(c.convert_to_aliases())
        else:
            aliases.append([c])
    return aliases

AliasGenerator dataclass

AliasGenerator(
    alias: Callable[[str], str] | None = None,
    validation_alias: (
        Callable[[str], str | AliasPath | AliasChoices]
        | None
    ) = None,
    serialization_alias: Callable[[str], str] | None = None,
)

使用文档

使用 AliasGenerator

一个数据类,被 alias_generator 用作创建各种别名的便捷方式。

属性

名称 类型 描述
alias Callable[[str], str] | None

一个可调用对象,它接受一个字段名并返回其别名。

validation_alias Callable[[str], str | AliasPath | AliasChoices] | None

一个可调用对象,它接受一个字段名并返回其验证别名。

serialization_alias Callable[[str], str] | None

一个可调用对象,它接受一个字段名并返回其序列化别名。

generate_aliases

generate_aliases(
    field_name: str,
) -> tuple[
    str | None,
    str | AliasPath | AliasChoices | None,
    str | None,
]

为字段生成 aliasvalidation_aliasserialization_alias

返回

类型 描述
tuple[str | None, str | AliasPath | AliasChoices | None, str | None]

包含三个别名的元组 - 验证、别名和序列化。

源代码位于 pydantic/aliases.py
125
126
127
128
129
130
131
132
133
134
135
def generate_aliases(self, field_name: str) -> tuple[str | None, str | AliasPath | AliasChoices | None, str | None]:
    """Generate `alias`, `validation_alias`, and `serialization_alias` for a field.

    Returns:
        A tuple of three aliases - validation, alias, and serialization.
    """
    alias = self._generate_alias('alias', (str,), field_name)
    validation_alias = self._generate_alias('validation_alias', (str, AliasChoices, AliasPath), field_name)
    serialization_alias = self._generate_alias('serialization_alias', (str,), field_name)

    return alias, validation_alias, serialization_alias  # type: ignore