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
不能完全按照您的要求运行,但是在我眼中却可以解决问题。