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'对象没有属性'