Pydantic Enum 转 字符串
【摘要】 在 Pydantic 中,当你使用 str 和 Enum 的子类(如你的 EmbeddingModelProvider)时,可以通过访问枚举成员的 .value 属性来获取其字符串值,然后可以在 f-string 中使用。 示例代码from enum import Enumfrom pydantic import BaseModelclass EmbeddingModelProvider(s...
在 Pydantic 中,当你使用 str 和 Enum 的子类(如你的 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
关键点说明
-
.value属性:
由于EmbeddingModelProvider继承自str和Enum,每个枚举成员的.value就是其字符串值(如OPENAI.value返回"openai")。 -
直接使用枚举成员:
在 f-string 中,{provider}会调用枚举成员的__str__方法,默认返回.value(因为继承自str),所以也可以直接写:f_string_example = f"Selected provider: {provider}" -
在 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)