继承自enum.Enum
提供的标准Python枚举提供了枚举名称和值。这是一个简短的例子:
@unique
class MyEnum(Enum):
foo = 2
bar = 5
print(MyEnum.foo.name + " - " + MyEnum.foo.value)
> foo - 2
类成员名称被转换为member.name
,指定的值转换为member.value
。我想使用更多自定义数据字段,如下所示:
@unique
class MyEnum(Enum):
foo = {'value':2, 'mydata1': "file2.txt"}
bar = {'value':5, 'mydata1': "file5.txt"}
print(MyEnum.foo.name + " - " + MyEnum.foo.value + " - " + MyEnum.foo.mydata1)
> foo - 2 - file2.txt
字典的每个键值对都被转换为名为对子键的成员属性(name
除外),并分配了该对的值。
通过从该类派生,可以在enum.EnumMeta
之上实现此功能吗?我看到类EnumMeta
和Enum
之间存在很多依赖关系:(。所以我假设我还需要一个新的Enum
类,我可以从中派生自定义枚举,对吗?
编辑1:
从EnumMeta对新元类进行子类化会导致foo
:
class ExtendedEnumMeta(EnumMeta):
# ...
所以我需要编写一个派生自type
的新元类。