跳转到内容

别名

支持别名配置。

AliasPath dataclass

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

一个由 validation_alias 用作创建别名的便利数据类。

属性

名称 类型 描述
路径 列表[整数 | 字符串]

字符串或整数别名列表。

源代码位于 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]

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

返回

类型 描述
列表[字符串 | 整数]

别名列表。

源代码位于 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 用作创建别名的便利数据类。

属性

名称 类型 描述
选择 列表[字符串 | 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]]

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

返回

类型 描述
列表[列表[字符串 | 整数]]

别名列表。

源代码位于 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 可调用[[字符串], 字符串] | 无

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

validation_alias 可调用[[字符串], 字符串 | AliasPath | AliasChoices] | 无

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

serialization_alias 可调用[[字符串], 字符串] | 无

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

generate_aliases

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

为字段生成 aliasvalidation_aliasserialization_alias

返回

类型 描述
元组[字符串 | 无, 字符串 | AliasPath | AliasChoices | 无, 字符串 | 无]

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

源代码位于 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