multimethod - multiple argument dispacthing.
Call multimethod on a variable number of types. It returns a decorator which finds the multimethod of the same name, creating it if necessary, and adds that function to it. For example:
'func' is now a multimethod which will delegate to the above function, when called with arguments of the specified types. If an exact match can't be found, the next closest method will be called (and cached). A function can have more than one multimethod decorator.
Supported on Python 2.5 or higher, including Python 3.x.