• 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 参数传值就只能是前面定义的,传其它值会抛异常

  • 相关阅读:
    使用net start mysql的时候出现服务名无效的原因及解决办法
    Appium的安装
    cpu
    单例模式
    Java中Synchronized的用法(简单介绍)
    java随机数Reandom(简单介绍)
    多线程面试题
    线程和进程有什么区别(简单介绍)
    java多线程(简单介绍)
    servlet三种方式实现servlet接口
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15922103.html
Copyright © 2020-2023  润新知