Pydantic Enum 转 字符串

举报
林欣 发表于 2025/10/15 09:11:08 2025/10/15
【摘要】 在 Pydantic 中,当你使用 str 和 Enum 的子类(如你的 EmbeddingModelProvider)时,可以通过访问枚举成员的 .value 属性来获取其字符串值,然后可以在 f-string 中使用。 示例代码from enum import Enumfrom pydantic import BaseModelclass EmbeddingModelProvider(s...

在 Pydantic 中,当你使用 strEnum 的子类(如你的 EmbeddingModelProvider)时,可以通过访问枚举成员的 .value 属性来获取其字符串值,然后可以在 f-string 中使用。

示例代码

from enum import Enum
from pydantic import BaseModel

class EmbeddingModelProvider(str, Enum):
    OPENAI = "openai"
    COHERE = "cohere"
    HUGGINGFACE = "huggingface"

# 示例:在 f-string 中使用枚举值
provider = EmbeddingModelProvider.OPENAI
f_string_example = f"Selected provider: {provider.value}"
print(f_string_example)  # 输出: Selected provider: openai

关键点说明

  1. .value 属性
    由于 EmbeddingModelProvider 继承自 strEnum,每个枚举成员的 .value 就是其字符串值(如 OPENAI.value 返回 "openai")。

  2. 直接使用枚举成员
    在 f-string 中,{provider} 会调用枚举成员的 __str__ 方法,默认返回 .value(因为继承自 str),所以也可以直接写:

    f_string_example = f"Selected provider: {provider}"
    
  3. 在 Pydantic 模型中使用
    如果枚举是模型字段,可以通过模型实例访问字段的 .value

    class Config(BaseModel):
        provider: EmbeddingModelProvider
    
    config = Config(provider=EmbeddingModelProvider.COHERE)
    print(f"Provider: {config.provider.value}")  # 输出: Provider: cohere
    

总结

  • 推荐方式:直接使用 {provider.value}{provider}(因继承自 str,两者效果相同)。
  • 确保枚举类继承 str,这样 Pydantic 会自动将枚举值序列化为字符串。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。