Python中将整数转为合法枚举成员时触发ValueError问题排查
问题原因及解决方法
你的错误出在枚举定义时每个成员值后面多了逗号,导致每个值被定义成了单元素元组(比如SYSTEM = 1,实际等价于SYSTEM = (1,)),而非整数。当你用MessageRole(1)查找时,枚举里没有值为整数1的成员,自然报错。
修正后的枚举定义
from enum import Enum class MessageRole(Enum): SYSTEM = 1 ASSISTANT = 2 USER = 3 FUNCTION = 4 TOOL = 5
正确的整数转枚举方式
修正后,你原本的代码role: MessageRole = MessageRole(1)就能正常运行,会返回MessageRole.SYSTEM。另外还有两种常用的枚举成员获取方式:
- 通过成员名直接获取:
MessageRole.SYSTEM - 通过字符串形式的成员名获取:
MessageRole['SYSTEM']
内容的提问来源于stack exchange,提问作者crux
相关产品推荐
相关产品推荐

