Python 中的枚举:构建棋子

Enums in Python: Building chess pieces

我正在尝试在 Python 3 中构建一个简单的棋盘,但我有点迷失了如何正确地表示棋子。我认为像这样为每种颜色和单品定义值是一个合理的想法:

from enum import Enum

class Piece(Enum):
    "This class represents a piece and its colour"
    Empty = 0
    King = 1
    Pawn = 2
    Knight = 4
    Bishop = 8
    Rook = 16
    Queen = 32

    White = 64
    Black = 128

现在我想通过连接颜色和像这样的片来表示片:

squares = []
square[0] = Piece.White | Piece.Rook

不幸的是,我的 IDE 告诉我该作品不会有“Rook”类型的成员。

我使用枚举的方式完全错误吗?我习惯用其他编程语言做这样的事情,但我对 Python 中的枚举不熟悉。有什么解决办法吗?

您正在寻找 Flag 枚举。有关示例用法,请参阅文档,但如果您将 Enum 更改为 Flag.

,您编写的代码应该没问题