I'm assuming what you want is to make a generic call - not edit the program for each object. I'm also not including lists, which would make the program read easier but just packs the basic problem in a more compact form.
To make the method generic, you have to define a parameter for
every object involved in the animation - and then pass values for all of the parameters if you don't want to use the defaults - see attached. (Note that
snowman_whitehat.head is
not the same as
snowman_readhat.head and also that you
can't use
snowman.head as a parameter - you get an error (name turns red) when you try.)
The same problem arises when you save the snowman object with the new method as a "new class". You get
another copy of the parameterized method, with a different name,
every time you import or instantiate the new "class." (I'd like to be wrong on this, it really isn't a positive thing.

If I am, somebody please show me my error and how to correct it.)