我有一个存储 4 个季节的枚举类,并希望能够移动到下一个季节。当我走到最后(秋天)时,我希望它回到第一个(冬天)。有没有一种简单的方法可以做到这一点,或者我最好只使用列表或其他结构。我在网上找到的一些答案似乎有点矫枉过正,所以我很好奇使用枚举是否值得。
from enum import Enum, auto
class Season(Enum):
WINTER = auto()
SPRING = auto()
SUMMER = auto()
FALL = auto()
>>> season = Season.SUMMER
>>> season.next()
<Season.FALL: 4>
>>> season.next()
<Season.WINTER: 1>
最佳答案
由于 Enum
已经支持迭代协议(protocol),这很容易,使用 itertools.cycle
:
>>> from itertools import cycle
>>> seasons = cycle(Season)
>>> next(seasons)
<Season.WINTER: 1>
>>> next(seasons)
<Season.SPRING: 2>
>>> next(seasons)
<Season.SUMMER: 3>
>>> next(seasons)
<Season.FALL: 4>
>>> next(seasons)
<Season.WINTER: 1>
关于python-3.x - 是否有一种简单的方法来循环迭代枚举?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58996433/