We're manually calling .update() and .draw() on the player object at the moment, which means our game loop is going to get more and more cluttered as we add additional objects to the game. Fortunately, Pygame has a solution!
The Group class is a container that holds and manages multiple game objects. We can organize our objects into various groups to track them more easily.
You can think of them as a sort of Venn diagram. An object can be in multiple groups at the same time! Eventually, our game's groups will look something like this:

Create a new empty group called my_group:
my_group = pygame.sprite.Group()
Add all future instances of a Player class to two different groups (group_a and group_b):
# Player is the name of the class, not an instance of it
# This must be done before any Player objects are created
Player.containers = (group_a, group_b)
You can iterate over objects in a group just like any other collection in Python:
for thing in group:
thing.do_something(some_value)
You may also call the .update() method for every member of a group by calling it on the group itself:
group.update(dt)
Player.containers = (updatable, drawable)
If everything seems to be working, run and submit the CLI tests.