Python Multiple Dispatch