An Enum
is not a sequence, so you cannot pass it to random.choice()
, which tries to pick an index between 0 and len(Foo)
. Like a dictionary, index access to an Enum
instead expects enumeration names to be passed in, so Foo[<integer>]
fails here with a KeyError
.
You can cast it to a list first:
bar = random.choice(list(Foo))
This works because Enum
does support iteration.
Demo:
>>> from enum import Enum
>>> import random
>>> class Foo(Enum):
... a = 0
... b = 1
... c = 2
...
>>> random.choice(list(Foo))
<Foo.a: 0>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…