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)