首页 > 解决方案 > 是一种将双索引实现为特殊方法 Python 的方法吗?

问题描述

我目前正在尝试实现一个数独求解器,我在其中创建了一个 9x9 棋盘和一个字典对象 sDict,其中包含棋盘中每个位置的所有候选集。在添加到板之前,我验证是否可以使用 sDict 将值放置在特定位置。这在ini方法中有效,因为 sDict 在将初始输入放入电路板时会更新其值。

但是,关于setitem特殊方法存在一个问题,在提供两个索引值时,它似乎无法按我的意图工作。似乎setitem方法只能在仅使用一个 [] 索引时调用,并且无论何时使用两个 [][] 索引,都完全忽略了更新我的板的覆盖方法。谁能解释一下为什么会这样,以及是否有比切换到单个索引更好的解决方案?

设置项代码如下:

    def __setitem__(self,index1, index2 value):
    if self.validate((index1,index2), value): # somehow getting through the check
        self.board[index1][index2] = value
    else:
        ValueError("Value '%d' is not a valid input for this position" %value)

提前致谢!:)

标签: pythonmagic-methods

解决方案


推荐阅读