今天我尝试了一个带有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必须是一个类
我该如何解决这个问题?
答案 0 :(得分:3)
使用调用语法创建枚举的各种方法是:
SELECT table_name FROM sys.tables WHERE table_name LIKE 'Mytable_%'
stdlib version,enum34
和aenum
1 的情况相同。 enum
2 包是一个旧式库。
stdlib版本包含:
* # 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)
与3.4 stdlib相同。
enum34
包含以上内容,加上:
以及操纵枚举构造的各种帮助:
以及其他相关类型:
aenum
,但使用元类而不是namedtuple
构建 1 披露:我是Python stdlib Enum
,enum34
backport和Advanced Enumeration (aenum
)库的主要作者。
2 较早的eval
库的作者也帮助了stdlib版本。
答案 1 :(得分:1)
aenum.Enum
不是这样构建的(请参阅https://bitbucket.org/stoneleaf/aenum)。
相反,您应该传入包含Enum名称的第一个参数,并且第二个参数对应于您想要枚举的空格分隔的枚举键列表。
E.g。
orientation = Enum('red', 'yellow green orange')
请注意https://stackoverflow.com/a/1695250/4720441
上的答案在这个答案中,海报创建了一个enum
函数,它将它的参数组合成dict
,然后将该dict传递给标准的Enum构造函数(作为第三个参数) 。