用Python为pygame创建对象数组

用Python为pygame创建对象数组,python,arrays,object,pygame,Python,Arrays,Object,Pygame,我创建对象 class Disk: def __init__(self,number,colour,position,size): self.size = size self.colour = colour self.number = number self.position = position def Render(self,screen): pygame.draw.rect(screen,self.colour,(self.position,se

我创建对象

class Disk:
def __init__(self,number,colour,position,size):
    self.size = size
    self.colour = colour
    self.number = number
    self.position = position


def Render(self,screen):
    pygame.draw.rect(screen,self.colour,(self.position,self.size))
我正在尝试使用用户输入创建此对象的数组(因为现在我只是创建自己的编号) 颜色是我创建的一个单独的数组(它可以工作)


除了尝试创建磁盘阵列并使用这些磁盘而不是对每个磁盘进行硬编码时,我的程序工作正常。

您还没有定义
磁盘。您试图同时创建列表和其中的项目,并对其进行迭代,但实际上并没有告诉Python应该是什么
disk
。尝试:

def drawDisk(screen, colours):
    disk = [Disk(i, colours[i], (0+(i*15), 500-(i*50)), (400 -(i*30), 50))
            for i in range(len(colours))] # create and fill disk
    # list comprehension, equivalent to:
    # disk = []
    # for i in range(len(colours)):
    #     disk.append(Disk(i, colours[i], ...))
    for d in disk:
        d.Render(screen) # use items in disk
    return disk # for use elsewhere

那么,当你创建一个
Disk
s的列表时会发生什么呢?它说“Disk”没有定义,但我不明白为什么这里定义了Disk?因为I in range(num)给出了一个列表索引超出范围的错误是
colors
25个项目长?是的,就是这样,我甚至没有注意到OK;已编辑的代码,假设您希望在
颜色中的每个项目都有一个
磁盘
。这会删除其中一个“神奇数字”,这很好。
def drawDisk(screen, colours):
    disk = [Disk(i, colours[i], (0+(i*15), 500-(i*50)), (400 -(i*30), 50))
            for i in range(len(colours))] # create and fill disk
    # list comprehension, equivalent to:
    # disk = []
    # for i in range(len(colours)):
    #     disk.append(Disk(i, colours[i], ...))
    for d in disk:
        d.Render(screen) # use items in disk
    return disk # for use elsewhere