Solution:2

What you want is a "Factory Pattern". Rather than create new Animals directly, call a function which chooses the type of animal to create. In Java I'd probably make that a static method of the class, and in Python I'd store all the Animal classes in a dictionary linked to the key, so I could look up the key and then pass the arguments along to the constructor.