Python 从列表中绘制多个对象(PyGame)

Python 从列表中绘制多个对象(PyGame),python,pygame,Python,Pygame,我对python相当陌生,正在尝试为大学课程创建一个boid克隆 #the class class Boid: def __init__(self, screen): self.screen = screen self.pos = Vector2D(random.randrange(400), random.randrange(400)) self.rad = 20 self.speed = Vector2D(-4,

我对python相当陌生,正在尝试为大学课程创建一个boid克隆

#the class
class Boid:
    def __init__(self, screen):
        self.screen = screen
        self.pos = Vector2D(random.randrange(400), random.randrange(400))
        self.rad = 20   
        self.speed = Vector2D(-4, -4)

    def draw(self):
        py.draw.circle(self.screen, (255,50,50), (self.pos.x, self.pos.y), self.rad)

# adding objects to a list
self.boid = Boid(self.screen)
self.boid1 = Boid(self.screen)
self.boid2 = Boid(self.screen)
self.boidlist = [self.boid, self.boid1, self.boid2]

#in the game loop, drawing from list
for boid in boidlist:
    boid.draw()
据我所知,它目前只绘制了三次第一个对象,而不是boid(1)、boid(2)等。我尝试了如下操作:

for i in range(3):
    boid(i).draw()
但我不知道如何格式化它,使其能够正常工作。
非常感谢您的帮助

您误解了如何创建和实例化类:

通过键入:

self.boid = Boid(self.screen)
self.boid1 = Boid(self.screen)
self.boid2 = Boid(self.screen)
我想您应该创建3个Boid实例,并将它们的screen参数设置为
screen
。为此:

boid = Boid(screen) # 'self.' is only when you create the class
boid1 = Boid(screen)
boid2 = Boid(screen)
最终固定代码:

向列表中添加对象
请发布一个完整的回溯。你在另一个类中有实例化代码吗?谢谢你的输入。是的,实例化代码在一个游戏主类中,但我通过一些调整,成功地使它与C.的解决方案一起工作。您仍然应该发布完整的示例。看起来您所要做的就是将
boidlist
更改为
self.boidlist
boid = Boid(screen) # 'self.' is only when you create the class
boid1 = Boid(screen)
boid2 = Boid(screen)

boidlist = [boid, boid1, boid2]

#in the game loop, drawing from list
for boid in boidlist: # This should now work correctly
    boid.draw()