我想使用类似的东西:
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/