def bind_method(value, instance):  # good with this
    """ Return a bound method if value is callable, or value otherwise """
    if callable(value):

        def method(*args):
            return value(instance, *args)

        return method
    else:
        return value