【发布时间】:2015-07-21 11:05:26
【问题描述】:
我在使用某些属性具有相同值的枚举时遇到问题。我认为枚举对 python 来说太新了,以至于我找不到任何其他关于这个问题的参考。无论如何,假设我有以下内容
class CardNumber(Enum):
ACE = 11
TWO = 2
THREE = 3
FOUR = 4
FIVE = 5
SIX = 6
SEVEN = 7
EIGHT = 8
NINE = 9
TEN = 10
JACK = 10
QUEEN = 10
KING = 10
很明显,这些是黑杰克中的卡号及其对应的值。十通王具有相同的价值。但是,如果我执行print(CardNumber.QUEEN) 之类的操作,我会返回<CardNumber.TEN: 10>。更重要的是,如果我对这些进行迭代,它只会对唯一值进行迭代。
>>> for elem in CardNumber:
... print(elem)
CardNumber.ACE
CardNumber.TWO
CardNumber.THREE
CardNumber.FOUR
CardNumber.FIVE
CardNumber.SIX
CardNumber.SEVEN
CardNumber.EIGHT
CardNumber.NINE
CardNumber.TEN
我该如何解决这个问题?我希望 CardNumber.QUEEN 和 CardNumber.TEN 是唯一的,并且都出现在任何迭代中。我唯一能想到的就是为每个属性赋予第二个值,该值将充当不同的 id,但这似乎不符合 Python 标准。
【问题讨论】:
-
Enum显然不是正确的选择。为什么不呢?一个OrderedDict代替?