在python中有两个键的索引器

sor*_*h-r 6 python

我是python的新手.我想写一个带有两个键作为索引器的类.还需要能够在类中使用它们,如下所示:

a = Cartesian(-10,-10,10,10) # Cartesian is the name of my class
a[-5][-1]=10
Run Code Online (Sandbox Code Playgroud)

在笛卡尔类中:

def fill(self,value):
   self[x][y] = x*y-value
Run Code Online (Sandbox Code Playgroud)

我试着用

def __getitem__(self,x,y):
  return self.data[x-self.dx][y-self.dy]
Run Code Online (Sandbox Code Playgroud)

但不起作用.

car*_*arl 10

如果你只需要一个轻量级的应用程序,你可以__getitem__接受一个元组:

def __getitem__(self, c):
  x, y = c
  return self.data[x-self.dx][y-self.dy]

def __setitem__(self, c, v):
  x, y = c
  self.data[x-self.dx][y-self.dy] = v
Run Code Online (Sandbox Code Playgroud)

并使用这样的:

a[-5,-1] = 10
Run Code Online (Sandbox Code Playgroud)

但是,如果您正在进行大量的数值计算或者这是您的应用程序不可或缺的部分,请考虑使用Numpy并将此坐标表示为向量:http://numpy.scipy.org/