簡體   English   中英

Pydantic json 值在自定義枚舉上為空

[英]Pydantic json value is empty on Custom Enum

我正在使用 Pydantic 我希望我的枚舉也有文檔字符串。

當我使用enum.Enum CookingModel工作正常。

import enum
from pydantic import BaseModel, ValidationError

class DocEnum(enum.Enum):
    """Enum with docstrings support"""

    def __new__(cls, value, doc=None):
        """add docstring to the member of Enum if exists

        Args:
            value: Enum member value
            doc: Enum member docstring, None if not exists
        """
        obj = str.__new__(cls)
        obj._value_ = value
        if doc:
            obj.__doc__ = doc
        return obj


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

class CookingModel(BaseModel):
    fruit: FruitEnum

a = CookingModel(fruit='banana')

a.json()

將返回: {"fruit": "banana"}

但是當我將enum.Enum更改為DocEnum時(這樣我就可以獲得文檔字符串)。

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

它將返回: {"fruit": ""}

我該如何解決?

value作為第二個參數傳遞給str.__new__解決問題。

import enum
from pydantic import BaseModel, ValidationError

class DocEnum(enum.Enum):
    """Enum with docstrings support"""

    def __new__(cls, value, doc=None):
        """add docstring to the member of Enum if exists

        Args:
            value: Enum member value
            doc: Enum member docstring, None if not exists
        """
        obj = str.__new__(cls, value)
        obj._value_ = value
        if doc:
            obj.__doc__ = doc
        return obj


class FruitEnum(str, DocEnum):
    pear = 'pear', 'it's pear docstring'
    banana = 'banana'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM