在Python中使用自定义值动态创建枚举?

时间:2015-11-13 10:00:10

标签: python enums

我想通过读取YAML文件中的值在运行时创建枚举类型。所以我有这个:

# Fetch the values
v = {'foo':42, 'bar':24}

# Create the enum
e = type('Enum', (), v)

有没有正确的方法呢?我觉得打电话type不是一个非常简洁的解决方案。

1 个答案:

答案 0 :(得分:22)

您可以使用Enum functional API创建新的枚举类型:

In [1]: import enum

In [2]: DynamicEnum = enum.Enum('DynamicEnum', {'foo':42, 'bar':24})

In [3]: type(DynamicEnum)
Out[3]: enum.EnumMeta

In [4]: DynamicEnum.foo
Out[4]: <DynamicEnum.foo: 42>

In [5]: DynamicEnum.bar
Out[5]: <DynamicEnum.bar: 24>

In [6]: list(DynamicEnum)
Out[6]: [<DynamicEnum.foo: 42>, <DynamicEnum.bar: 24>]