'Find action-specific method on self and call it.'

def dispatch(self, obj, action, *args, **kwargs):

    try:
        method = getattr(obj, action)
    except AttributeError:
        method = getattr(obj, 'default')
    return method(*args, **kwargs)
