在PEP 435之前,Python没有类似的功能,但是您可以实现自己的。
我自己,我喜欢保持简单(我在网上看到了一些非常复杂的例子),像这样的.class Animal:
DOG = 1
CAT = 2x = Animal.DOG
在Python3.4中(佩普435),你可以Enum基类。这给您带来了一些额外的功能,在PEP中进行了描述。例如,枚举成员与整数不同,它们由name和一个value.class Animal(Enum):
DOG = 1
CAT = 2print(Animal.DOG)# print(Animal.DOG.value)# 1print(Animal.DOG.name)# "DOG"
如果不想键入这些值,请使用以下快捷方式:class Animal(Enum):
DOG, CAT = range(2)
Enum实现可以转换为列表,并且是可迭代的。..其成员的顺序是声明顺序,与其价值观无关。例如:class Animal(Enum):
DOG = 1
CAT = 2
COW = 0list(Animal)# [, , ][animal.value for animal in Animal]# [1, 2, 0]Animal
.CAT in Animal# True