python - 将字符串列表转换为“IntFlag”
问题描述
我有一堆IntFlag
类型,我希望经常将配置文件中的字符串列表转换为这些类型的成员。我目前的计划是扩展IntFlag
:
class BetterIntFlag(IntFlag):
@classmethod
def parse(cls, items):
value = cls(0)
for item in items:
value |= cls[item]
return value
我对这个解决方案很满意,但我不禁觉得我一定错过了一种简洁的内置方式来做到这一点。
我在 3.3 上使用向后移植的枚举。
解决方案
如果通过 backport 你的意思是aenum
1,它是内置的:
from aenum import IntFlag
class Color(IntFlag):
red = 1
green = 2
blue = 4
并在使用中:
--> Color['red|blue']
<Color.blue|red: 5>
--> items = ['red', 'blue']
--> Color['|'.join(items)]
<Color.blue|red: 5>
1披露:我是Python stdlibEnum
、enum34
backport和Advanced Enumeration ( aenum
) 库的作者。
推荐阅读
- sql - 为什么 SQL Server 不使用 SUM 遵循 BODMAS 数学规则?
- ios - 语言更改不受文本验证器的影响
- opencv - OpenCv 在构建时不保存图像?
- google-cloud-storage - 未找到有关 API 实例的属性“类型”(SCRATCH) 的详细信息。attachDisk()
- c++ - 无法将接口从主线程编组到工作线程
- python - 为了反映一个新的计算变量,比如说,'SF-1',对于来自 excel 表的每个节点,到 ABAQUS 模型可视化等高线图上的节点。
- inheritance - Vue 是否允许像 Symfony 对 Twig 那样的模板继承?
- javascript - 将数组转换为由字符串分隔的 React 组件数组
- docker - 在 ubuntu 18 上删除 Docker
- docker - 不使用 -only 选项的默认打包程序生成器