Python3编写随机井字棋AI继承报错缺少sign参数如何解决?
问题修复方案
错误原因
父类Player的构造方法__init__定义的参数顺序为name, sign, board = None,你在子类AI中调用super().__init__(board)时,仅传入了1个参数,程序会将board识别为父类要求的第一个参数name,缺少了第二个必传参数sign,因此抛出TypeError。
修复代码
你只需要调整AI类的构造方法,按照父类要求的参数顺序传参即可,同时可以删除子类中重复的属性赋值逻辑,父类已经实现了对应功能:
class AI(Player): def __init__(self, name, sign, board = None): # 按父类参数顺序传入对应参数 super().__init__(name, sign, board) def choose(self, board): valid_moves = ["A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3"] # 额外优化:仅从空位中随机选择,避免覆盖已有棋子 empty_moves = [cell for cell in valid_moves if board.isempty(cell)] cell = choice(empty_moves) board.set(cell, self.sign)
修改后你原来的调用逻辑player1 = AI("Bob", "X", board)即可正常运行。
内容的提问来源于stack exchange,提问作者blake
相关产品推荐
相关产品推荐

