Reasons to love Python
It lets you do twisted things like this:
waves = [[Clown, Clown, Clown], [Clown, Tank, Bunny, Clown], [Clown, Tank, Tank, Clown], [Clown, Tank, Tank, Bunny], [Tank, Tank, Tank, Clown], ... ]where Clown, Tank and Bunny are the Types of the various enemies and later…
for enemy in waves[wave]: enemy(xpos, ypos, 0, 0, self.target)and it just figures it out and calls the constructor for the relevant type.