You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何从包含多个值的IntFlag枚举获取字符串数组?

解决方案

直接通过枚举类成员校验的方式实现,完全不需要做字符串截取/拆分操作,鲁棒性更高,示例代码如下:

from enum import IntFlag

class BitShift(IntFlag):
    Bit8 = 0x80
    Bit7 = 0x40
    Bit6 = 0x20
    Bit5 = 0x10
    Bit4 = 0x8
    Bit3 = 0x4
    Bit2 = 0x2
    Bit1 = 0x1

bitshiftval = BitShift(0x84)
# 核心转换逻辑
res = [member.name for member in BitShift if member in bitshiftval]
print(res)

运行后直接输出你需要的结果:['Bit8', 'Bit3']

方案说明

  • 该方法兼容所有支持IntFlag的Python版本(Python 3.6及以上),无需依赖高版本新特性
  • 逻辑原理是遍历枚举类的所有单值成员,校验该成员是否被包含在当前多值组合的IntFlag实例中,匹配成功则取成员的name属性(即成员名称字符串)加入结果数组
  • 相比字符串拆分的方法,不会受枚举类名变更、成员名含特殊字符的影响,稳定性和性能都更优
  • 如果你使用Python 3.11及以上版本,还可以直接迭代IntFlag实例,写法更简洁:
    res = [m.name for m in bitshiftval]
    

内容的提问来源于stack exchange,提问作者Peter Lambrechtsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:54:03