由于某些原因,此代码引发此错误:
player.py:
class player():
def __init__(self, x, y, width, height):
self.collisionXY[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
错误:
line 21, in __init__
self.collisionXY[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
AttributeError: 'player' object has no attribute 'collisionXY'
我要存储的是碰撞rect的x1,x2,y1,y2坐标作为intlashXY列表中的整数,如何固定代码来做到这一点
答案 0 :(得分:1)
如果您想为该变量分配一个列表,它将是
self.collisionXY = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
或者只是
self.collisionXY = [0]*16
撰写时
self.collisionXY[16] =...
,它被解释为试图写入self.collisionXY
中的索引16,这会产生错误,因为尚未定义self.collisionXY
。
答案 1 :(得分:0)
您正在尝试创建一个由16个int组成的数组,这些数组初始化为0。
您可以使用列表
self.collisionXY = [0]*16
元组:
self.collisionXY = (0,)*16
或array:
import array
...
self.collisionXY = array.array('l', [0]*16)