获取下一个枚举器常量/属性

Par*_*ker 9 python enums enumeration python-3.x

让我们说我有一个普查员,是否有可能得到随后的财产?所以,如果我有today=Days.Sunday,我能做什么tomorrow=today.next()

例:

class Days(Enum):
     Sunday = 'S'
     Monday = 'M'
     ...
     Saturday = 'Sa'
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用元组(如下所示)做类似的事情tomorrow=today[1],但我希望有一些内置或更优雅的东西.

class Days(Enum):
     Sunday = ('S','Monday')
     Monday = ('M','Tuesday')
     ...
     Saturday = ('Sa','Sunday')
Run Code Online (Sandbox Code Playgroud)

Eth*_*man 8

绝对.

只需在您的Days课程中添加所需的功能:

class Days(Enum):

    Sunday = 'S'
    Monday = 'M'
    Tuesday = 'T'
    Wednesday = 'W'
    Thursday = 'Th'
    Friday = 'F'
    Saturday = 'Sa'

    def next(self):
        cls = self.__class__
        members = list(cls)
        index = members.index(self) + 1
        if index >= len(members):
            index = 0
        return members[index]
Run Code Online (Sandbox Code Playgroud)

并使用:

today = Days.Wednesday
print(today.next())
# Days.Thursday
Run Code Online (Sandbox Code Playgroud)