python支持什么索引_Python:Object不支持索引

Yes, this question has been asked before. No, none of the answers I read could fix the problem I have.

I'm trying to create a little Bounce game. I've created the bricks like this:

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]

And I'm trying to reference the ID of bricksId[0] over here:

self.hit_brick(pos,self.bricks.bricksId[0])

Earlier, in the __init__, I define bricks as bricks, which is defined as Brick(canvas). However, the error states:

TypeError: 'Brick' object does not support indexing

In the answers to the other questions of this subject, I cannot find any that help me access bricks.bricksId[0].

解决方案

In order for the Brick object to be indexable, you must implement the methods:

__getitem__

__setitem__

__delitem__

You don't need all of them, only the ones you use.

However, this seems like a case of self.bricks being a brick instead of a list of bricks. A list of bricks is indexable; however, a brick itself is not unless you implement the methods above.

Check this for reference.

In order to be able to call self.bricks.bricksId[number] when I needed:

def __getitem__(self,index):

return self.bricks.bricksId[index]

def __setitem__(self,index,value):

self.bricks.bricksId[index] = value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值