Pygame's Sprite class and Group system give every game object a standard shape — an image, a rect, and update/draw logic — so hundreds of enemies, bullets, or coins can be managed with just a few lines of code. LayeredUpdates adds explicit draw ordering, and sprite sheets let one image supply every animation frame a character needs.
group.update() calls the method on every sprite inside it.sprite.().1-B 2-B 3-B 4-B | 5 update 6 kill 7 = self.image (the Surface drawn) and self.rect (position used for drawing/collisions) 8 = it wires the object into Pygame's internal sprite bookkeeping so it can be added to Groups correctly 9 = slicing costs time; doing it once avoids repeating that cost 60 times a second, keeping frame rate high | 10 = pygame.sprite.LayeredUpdates, adding each sprite with an explicit layer (background=0, player=1, HUD=2) — draw() then respects layer order regardless of add() order