【发布时间】:2020-09-22 06:24:15
【问题描述】:
假设我有一个Python Enum,每个枚举实例都应该引用同一个枚举的另一个实例。我该怎么做?
当我尝试这样的事情时:
class Direction(Enum):
NORTH = (1,0, Direction.EAST, Direction.WEST)
SOUTH = (-1,0, Direction.WEST, Direction.EAST)
EAST = (0,1, Direction.SOUTH, Direction.NORTH)
WEST = (0, -1, Direction.NORTH, Direction.SOUTH)
def __init__(self, y, x, r, l):
self.y = y
self.x = x
self.r = r
self.l = l
我收到一个看起来有点像这样的错误:
Traceback (most recent call last):
File "lol.py", line 2, in <module>
class Direction(Enum):
File "lol.py", line 3, in Direction
NORTH = (1,0, Direction.EAST, Direction.WEST)
NameError: name 'Direction' is not defined
当我在上面的示例中将“Direction”替换为“self”时,我遇到了同样的问题。
有没有办法做到这一点?
【问题讨论】:
-
您正试图根据同一枚举
EAST的另一个值定义枚举值NORTH,而后者又根据值NORTH定义 - 这样的循环定义只能导致问题。你想达到什么目的?因为这里可能有一个很好的 Pythonic 解决方案来解决您的 XY 问题。 -
我本质上希望能够通过查找我们从当前方向转向的方向的值来“向右”或“向左”。即:
new_direction = old_direction.l
标签: python python-3.x object enums