Python重载多个getitems/index请求

jsj*_*jsj 8 python operator-overloading

我有一个Grid我想要使​​用的课程myGrid[1][2].我知道我可以使用该__getitem__()方法重载第一组方括号,但第二组呢.

我认为我可以通过一个也实现的辅助类来实现这一点__getitem__,然后:

class Grid:

    def __init__(self)
        self.list = A TWO DIMENSIONAL LIST       

    ...

    def __getitem__(self, index):
        return GridIndexHelper(self, index)

class GridIndexHelper:

    def __init__(self, grid, index1):
        self.grid = grid
        self.index1 = index1

    ....

    def __getitem__(self, index):
        return self.grid.list[self.index1][index]
Run Code Online (Sandbox Code Playgroud)

这看起来有点过于自制......实现这一目标的蟒蛇方法是什么?

bpg*_*rgo 11

class Grid:

    def __init__(self):
        self.list = [[1,2], [3,4]]

    def __getitem__(self, index):
        return self.list[index]

g = Grid();

print g[0]
print g[1]
print g[0][1]
Run Code Online (Sandbox Code Playgroud)

版画

[1, 2]
[3, 4]
2
Run Code Online (Sandbox Code Playgroud)


小智 5

据我所知,anajem提到的方式是唯一的方式。

例:

class Grid(object):

def __init__(self):
    self.list = [[1, 2], [3, 4]]

def __getitem__(self, index):
    return self.list[index[0]][index[1]]

if __name__ == '__main__':
    mygrid = Grid()
    mygrid[1, 1] #How a call would look
Run Code Online (Sandbox Code Playgroud)

版画:4

不能完全按照您的要求运行,但是在我眼中却可以解决问题。