import functools


def prepost_method(method_name, *method_args, **method_kwargs):
    """Decorators that call an instance method before and after another."""
    def prepost_method_decorator(instance_method):
        """Call an instance method before and after the decorated method."""
        @functools.wraps(instance_method)
        def wrapper(self, *args, **kwargs):
            getattr(self, method_name)(*method_args, **method_kwargs)
            output = instance_method(self, *args, **kwargs)
            getattr(self, method_name)(*method_args, **method_kwargs)
            return output
        return wrapper
    return prepost_method_decorator