na separate class 为什么在那个构造函数中接受一个类的实例会导致没有语句效果错误?

我正在创建一个国际象棋游戏,我决定在其中实现两个类,一个抽象类扩展到各种抽象操作(Pawn、King、Queen、Rook、Knight、Bishop)的棋子类,每个棋子都将放在一个地方. spot 类表示 8x8 网格的一个块和一个可选块。在我的 spot 类中,我在构造函数中接受了 piece 类的一个实例,但我收到错误“No statement effect errors”。我不确定为什么?


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


MYYA
浏览 94回答 1
1回答

大话西游666

在 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python