Python - 有没有办法为多维数组实现 __getitem__?

标签 python arrays python-2.7 numpy multidimensional-array

我想使用类似的东西:

class Board():
    ...
    def __getitem__(self, y, x):
        return self.board[y][x]

但不幸的是,当我打电话时:

board[x][y]

我得到: TypeError: __getitem__() 正好接受 3 个参数(给定 2 个)

最佳答案

当您执行 board[x][y] 时,您将导致 两次 调用 __getitem__,因为您正在执行两个单独的访问:[x] 是一个,[y] 是另一个。 __getitem__ 中没有办法直接处理这个问题;您必须让 board[x] 返回某种您可以使用 [y] 来获取单个项目的子对象。您可能想要的是让 __getitem__ 接受一个元组:

def __getitem__(self, tup):
    y, x = tup
    return self.board[y][x]

然后做:

board[x, y]

(请注意,您在 __getitem__board[x][y] 之间切换了 x 和 y 的顺序——这是故意的吗?)

关于Python - 有没有办法为多维数组实现 __getitem__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478284/

相关文章:

python - Django MySql - 结合only()和distinct()

arrays - Autoit - 比较两个数组的每个元素

python - 正确实现 Python 多处理

python-2.7 - 使用 Anaconda : setting the system path configuration script 在 Windows 8.1 上安装 Theano

python - Python 路径在哪里被操作?

python - 将文本解析到它自己的字段中,进行计数,并将选择的字段 reshape 为宽格式

python - Python,Eclipse中正则表达式字符串的pep8警告

c++ - 在类中声明一个数组,并使用构造函数设置其大小

JavaScript 在迭代数组时等待后端响应

python - 在 Raspberry Pi 中使用 SSH 获取输入?