def setter(*field_names):
    """
    Decorates a method that validates and sets any number of fields in the object
    """

    def decorator(f):
        # Put the check cache on the method itself instead of globally
        f._setter_cache = field_names
        return f

    return decorator