python single dispatch multiple arguments