Python:aenum 枚举生成错误

Cre*_*nik 1 python enums

今天我尝试使用 aenum 进行枚举(就像这个答案: https: //stackoverflow.com/a/1695250/4720441):

orientation = Enum('red', 'yellow', 'green', 'orange')

但这在 aenum 库中产生了一个错误:

文件“C:\Python\27\lib\site-packages\aenum__init__.py”,第 1417 行,在 _get_mixins_ issubclass(base, Enum) 和 TypeError: issubclass() arg 1 必须是一个类

我怎样才能解决这个问题?

Eth*_*man 5

使用调用语法创建 Enum 的各种方法是:

# starts at 1
SomeEnum = Enum('SomeEnum', 'member1 member2 member3')

# starts at 1
SomeEnum = Enum('SomeEnum', ['member1', 'member2', 'member3'])

# values manually assigned
SomeEnum = Enum('SomeEnum', [('member1', 3), ('member2', 4), ('member3', 5)])

# values manually assigned
SomeEnum = Enum('SomeEnum', {'member1': 6, 'member2': 7, 'member3': 8})

# starts at 9
SomeEnum = Enum('SomeEnum', 'member1 member2 member3', start=9)
Run Code Online (Sandbox Code Playgroud)

这在stdlib 版本enum341中都是相同的。2包是一个旧式的库。aenumenum


stdlib 版本包含

3.4

  • 枚举
  • 内部枚举
  • 独特的

3.6

  • 旗帜
  • 整数标志

*enum34与 3.4 stdlib 相同。

aenum

包含以上内容,加上

  • OrderedEnum - 成员可以相互比较
  • AutoNumberEnum - 自动生成值
  • MultiValueEnum - 可以查找具有多个值的成员
  • NoAliasEnum - 重复项是唯一的,而不是别名

以及各种助手来操纵枚举的构造:

  • 跳过 - 防止属性成为枚举成员(属性保持不变)
  • 常量——防止属性成为枚举成员(属性成为一种只读属性)
  • extend_enum - 将新成员添加到现有枚举(当枚举分阶段构建时很有用)

以及额外的相关类型

  • NamedConstant - 没有枚举花哨,只是一个带有名称的值
  • NamedTuple - 类似于 stdlib namedtuple,但使用元类而不是构建eval

1声明:我是Python stdlibEnumenum34backportAdvanced Enumeration ( aenum)库的主要作者。

2旧库的作者enum也对 stdlib 版本提供了帮助。