在Python中修改enum类

2024-06-08 20:40:28 发布

您现在位置:Python中文网/ 问答频道 /正文

from enum import Enum

class Direction(Enum):
    NORTH = 0
    EAST = 1
    SOUTH = 2
    WEST = 3

    def turn_right(self):
        self = Direction((self.value + 1) % 4)

d = Direction.EAST
print(d)
d.turn_right()
print(d)
d.turn_right()
print(d)

预期输出应该是

Direction.EAST
Direction.SOUTH
Direction.WEST

每转一圈,但我得到的只是

Direction.EAST
Direction.EAST
Direction.EAST

看起来它没有更新self,但是为什么?如何更改类以使其用法保持不变?你知道吗

一种可能的解决方法是

    def turn_right(self):
        return Direction((self.value + 1) % 4)

但是每次都会返回一个新的Direction,有没有办法让方法“原地”工作?你知道吗


Tags: 方法fromimportselfrightvaluedefenum