python中带两个键的索引器
我是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[
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。你可以很容易地做矩阵和向量运算。