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 參數傳值就只能是前面定義的,傳其它值會拋異常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM