0

我正在创建一个国际象棋游戏,我决定在其中实现两个类,一个抽象类的棋子类扩展到各种抽象操作(Pawn、King、Queen、Rook、Knight、Bishop),每个棋子都将放在一个位置. 点类代表 8x8 网格的一个块和一个可选块。在我的现场类中,我在构造函数中获取了一个片段类的实例,但我收到一个错误“无语句效果错误”。我不确定为什么?

class Spot:

    def __init__(self, x, y,Piece piece):
        self.x = x
        self.y = y
        self.piece = piece

class Piece:
    killed = False
    white = False
    def __init__(self, white,killed):
        self.white = white
        self.killed = killed
    def iswhite(self):
        return self.white == True
    def iskilled(self):
        return self.killed == True
4

1 回答 1

1

在 Python 中,您不需要像在 Java、C#、C++ 等中那样声明参数的类型。Python 是动态类型的,因此解释器将确定您在运行时传递的对象。

更改您的代码如下:

class Spot:
    def __init__(self, x, y, piece):
        self.x = x
        self.y = y
        self.piece = piece

如果你真的想指定数据类型,你可以使用 Python 的一个叫做类型提示的特性,如下所示:

class Spot:
    def __init__(self, x: int, y: int, piece: Piece):
        self.x = x
        self.y = y
        self.piece = piece

其他一些指针:

  • 不需要比较布尔运算符使用x == True,您可以简单地返回布尔变量x,这将具有相同的效果。
  • 你应该总是在 Python 中使用 snake_case,所以is_white不要使用iswhite.
  • 您不需要Piece像那样初始化类中的变量。您可以在__init__方法中直接使用默认参数执行此操作。因此,如果用户不提供参数,则该参数将使用默认值。
class Piece:

    def __init__(self, white=False, killed=False):
        self.white = white
        self.killed = killed

    def is_white(self):
        return self.white

    def is_killed(self):
        return self.killed
于 2020-07-14T00:36:42.837 回答