python中带两个键的索引器

python中带两个键的索引器,python,Python,我是python的新手。我想写一个有两个键的类作为索引器。还需要能够在类内使用它们,如下所示: a = Cartesian(-10,-10,10,10) # Cartesian is the name of my class a[-5][-1]=10 a[-5,-1] = 10 在笛卡尔类中: def fill(self,value): self[x][y] = x*y-value 我试着用 def __getitem__(self,x,y): return self.data[

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

a = Cartesian(-10,-10,10,10) # Cartesian is the name of my class
a[-5][-1]=10
a[-5,-1] = 10
在笛卡尔类中:

def fill(self,value):
   self[x][y] = x*y-value
我试着用

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

但是不起作用。

如果您只需要一个轻量级应用程序,您可以让
\uu getitem\uuuu
接受一个元组:

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
>>> class Foo(object):
...     def __getitem__(self, key):
...         x, y = key
...         print x, y
... f = Foo()
... f[1,2]
1 2
然后像这样使用:

a = Cartesian(-10,-10,10,10) # Cartesian is the name of my class
a[-5][-1]=10
a[-5,-1] = 10

但是,如果你正在做大量的数值计算,或者这是对你的应用程序的积分,考虑使用NUMPY,并且只把这个坐标表示成向量:

< P>你有必要明确地定义一个<代码> CARTESIIN()< <代码>类吗?例如,是否有计算方法?如果不是,那么只需使用列表中的列表就可以使用这种类型的语法

如果你需要一个类,那么考虑添加一个<代码>。坐标(x,y)< /c>方法,而不用费心去做列表语法。

接受元组:

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
>>> class Foo(object):
...     def __getitem__(self, key):
...         x, y = key
...         print x, y
... f = Foo()
... f[1,2]
1 2

我只是在尝试python,我不需要完成任何事情!但听起来索引器更漂亮。谢谢,(与下面的答案相同:)…)谢谢卡尔,python真是太棒了!我不知道什么是numpy,我试试看。(与python不同?)Numpy是一个用于数值计算的python库。Numpy是一个用于python的库,它使数值计算变得更容易(比本机python更快)。它类似于Matlab,但适用于Python。你可以很容易地做矩阵和向量运算。