Python dict条目没有被正确引用

时间:2013-08-26 15:06:24

标签: python object dictionary

我正试图用这种方式用新数据在屏幕上创建新对象:

spawnedObjectDict = dict()
while True: # main loop
if mouseClicked == True:
        RectangleName = "Rectangle" + str((len(spawnedObjectDict)))
        spawnedObjectDict[RectangleName] = SpawnedRectangle
        spawnedObjectDict[RectangleName].positionX = mouseX
        spawnedObjectDict[RectangleName].positionY = mouseY

这应该是创建新对象并为它们分配等于鼠标的坐标。但是,它会不断为所有人分配新的鼠标坐标,因此它们只是叠加在一起。起初我假设它只是绘制一个,或者由于某种原因只有一个对象在dict中,但我添加了这个以确保:

def drawRectCoords(RectName, theDict, x, y, size_x, size_y):
    for i in iter(theDict):
        BASICFONT = pygame.font.Font('freesansbold.ttf', 20)
        textSurf = BASICFONT.render(str(theDict['Rectangle0'].positionX) + ", " + \
                                    str(theDict['Rectangle0'].positionY), True, (255, 255, 255), (0, 0, 0))
        textRect = textSurf.get_rect()
        textRect.topleft = (x, y)


        textSurf2 = BASICFONT.render(str(len(theDict)) + ", " + RectName, True, (255, 255, 255), (0, 0, 0))
        textRect2 = textSurf2.get_rect()
        textRect2.topleft = (150, (20*len(theDict)))
        DISPLAYSURF.blit(textSurf, textRect)
        DISPLAYSURF.blit(textSurf2, textRect2)

果然,Rectangle0的坐标每次都在变化,但textSurf2每次都会更新,以显示RectangleName正在变化,并且spawnedObjectDict的长度正在增加。

1 个答案:

答案 0 :(得分:2)

要创建SpawnedRectangle的新实例,请执行以下操作:

spawnedObjectDict[RectangleName] = SpawnedRectangle()

您目前正在做的是将班级SpawnedRectangle分配给词典中的不同键。