Ответ 1
An Enum
не является последовательностью, поэтому вы не можете передать его в random.choice()
, который пытается выбрать индекс между 0 и len(Foo)
. Как и словарь, индексный доступ к Enum
вместо этого ожидает, что имена перечислений будут переданы, поэтому Foo[<integer>]
здесь не работает с KeyError
.
Сначала вы можете перенести его в список:
bar = random.choice(list(Foo))
Это работает, потому что Enum
поддерживает итерацию.
Демо:
>>> from enum import Enum
>>> import random
>>> class Foo(Enum):
... a = 0
... b = 1
... c = 2
...
>>> random.choice(list(Foo))
<Foo.a: 0>