为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MYYA 2023-03-08 09:57:52
我正在创建一个国际象棋游戏,我决定在其中实现两个类,一个抽象类扩展到各种抽象操作(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 = piececlass 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
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

在 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


查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号