0
点赞
收藏
分享

微信扫一扫

pydantic学习与使用-9.枚举类型(enum)


前言

python3 内置的enum 模块可以支持枚举类型,此模块定义了四个枚举类,用来定义名称与值的唯一组合: Enum、IntEnum、Flag 和 IntFlag。此外,还定义了一个装饰器unique(), 和一个辅助类auto。

枚举是由 class 句法创建的,这种方式易读、易写。

枚举类型

pydantic使用 python 的标准enum类来定义选择。

from enum import Enum, IntEnum

from pydantic import BaseModel, ValidationError


class FruitEnum(str, Enum):
pear = 'pear'
banana = 'banana'


class ToolEnum(IntEnum):
spanner = 1
wrench = 2

创建数据模型,字段设置为前面定义的枚举类型

class CookingModel(BaseModel):
fruit: FruitEnum = FruitEnum.pear
tool: ToolEnum = ToolEnum.spanner


print(CookingModel())
#> fruit=<FruitEnum.pear: 'pear'> tool=<ToolEnum.spanner: 1>
print(CookingModel(tool=2, fruit='banana'))
#> fruit=<FruitEnum.banana: 'banana'> tool=<ToolEnum.wrench: 2>
try:
CookingModel(fruit='other')
except ValidationError as e:
print(e)
"""
1 validation error for CookingModel
fruit
value is not a valid enumeration member; permitted: 'pear', 'banana'
(type=type_error.enum; enum_values=[<FruitEnum.pear: 'pear'>,
<FruitEnum.banana: 'banana'>])
"""

fruit 和 tool 参数传值就只能是前面定义的,传其它值会抛异常



举报

相关推荐

0 条评论