Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:对象不支持索引_Python_Object_Indexing_Typeerror - Fatal编程技术网

Python:对象不支持索引

Python:对象不支持索引,python,object,indexing,typeerror,Python,Object,Indexing,Typeerror,是的,这个问题以前有人问过。不,我读到的答案都不能解决我的问题 我想做一个弹跳游戏。我创建了如下砖块: def __init__(self,canvas): self.canvas = canvas self.brick1 = canvas.create_rectangle(0,0,50,20,fill=random_fill_colour(),outline=random_fill_colour()) self.brick2 = canvas.create_rectan

是的,这个问题以前有人问过。不,我读到的答案都不能解决我的问题

我想做一个弹跳游戏。我创建了如下砖块:

def __init__(self,canvas):
    self.canvas = canvas
    self.brick1 = canvas.create_rectangle(0,0,50,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick2 = canvas.create_rectangle(50,0,100,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick3 = canvas.create_rectangle(100,0,150,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick4 = canvas.create_rectangle(150,0,200,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick5 = canvas.create_rectangle(200,0,250,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick6 = canvas.create_rectangle(250,0,300,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick7 = canvas.create_rectangle(300,0,350,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick8 = canvas.create_rectangle(350,0,400,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick9 = canvas.create_rectangle(400,0,450,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.brick10 = canvas.create_rectangle(450,0,500,20,fill=random_fill_colour(),outline=random_fill_colour())
    self.bricksId = [self.brick1,self.brick2,self.brick3,self.brick4,self.brick5,self.brick6,self.brick7,self.brick8,self.brick9,self.brick10]
我试图在这里引用
bricksId[0]
的ID:

self.hit_brick(pos,self.bricks.bricksId[0])
在前面的
\uuuu init\uuuu
中,我将砖块定义为砖块,定义为
砖块(画布)
。但是,错误说明:

TypeError: 'Brick' object does not support indexing

在本主题其他问题的答案中,我找不到任何有助于我访问
bricks.bricksId[0]
为了使
Brick
对象可索引,必须实现以下方法:

  • \uuuu获取项目\uuuuu
  • \uuuuu设置项目
  • \uuuu delitem\uuuuu
你不需要全部,只需要你使用的

然而,这看起来像是一个例子,
self.bricks
是一块砖块,而不是一个砖块列表。砖块列表是可索引的;但是,除非您实现上述方法,否则砖块本身不是

查阅参考资料


为了能够在需要时调用self.bricks.bricksId[number]:

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

def __setitem__(self,index,value):
    self.bricks.bricksId[index] = value

什么是完整的回溯?如果
self.bricks.bricksId[0]
抛出异常,
self.bricksId.bricksId
似乎不再是列表。回溯(最近一次调用):文件“C:\Users\Jonathan\Documents\Python\Bounce!.py”,第106行,在ball.draw()文件“C:\Users\Jonathan\Documents\Python\Bounce!.py”中,draw self.hit\u brick第47行(pos,self.bricks.bricksId[0])文件“C:\Users\Jonathan\Documents\Python\Bounce!.py”,第61行,在hit\u brick brick\u pos=self.canvas.coords(self.bricks[brickId].id)TypeError:“brick”对象不支持索引
self.bricks[bricksId]
self.bricksId.bricksId[0]不同
。你是不是想在那里使用
self.bricks.bricksId[brickkid].id
呢?如何初始化
self.bricks
?@MartijnPieters我刚刚修复了这个问题,但我得到了一个新错误:回溯(最近一次调用):文件“C:\Users\Jonathan\Documents\Python\Bounce!.py”,第106行,在ball.draw()文件中“C:\Users\Jonathan\Documents\Python\Bounce!.py”,第47行,在绘制self.hit_-brick(pos,self.bricks.bricksId[0])文件“C:\Users\Jonathan\Documents\Python\Bounce!.py”中,在hit_-brick-brick-brick\u-pos=self.canvas.coords(sel.bricksId.bricksId)中,第61行,AttributeError:'int'对象没有属性'