You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:54:05