Class decorator in Python to set variables for the constructor
The parameters to autofill could have better names: args gives the argument names to the constructor, and kwargs gives the keyword names and their default values, so perhaps argnames and defaults would be better. This will also help to distinguish them from the parameters to the filler function.
The function filler is used to implement the __init__ method, so its first argument should be named self, not cls.
The original __init__ method is recorded in the super_init property of the filler function. I think that's needlessly tricky. It would be simpler to record it in a local variable:

def init_switcher(cls):
    original_init = cls.__init__

    def init(self, *args, **kwargs):
        for k, v in InputSanitizer(*args, **kwargs)._asdict().items():
            setattr(self, k, v)
        original_init(self)

    cls.__init__ = init
    return cls

The implementation mechanism is quite ingenious! It would not have occurred to me to delegate the argument processing to collections.namedtuple. However, I think that it is clearer to delegate it to inspect.Signature:

from inspect import Parameter, Signature

def autofill(*argnames, **defaults):
    """Class decorator that replaces the __init__ function with one that
    sets instance attributes with the specified argument names and
    default values. The original __init__ is called with no arguments
    after the instance attributes have been assigned. For example:

    &gt;&gt;&gt; @autofill('a', 'b', c=3)
    ... class Foo: pass
    &gt;&gt;&gt; sorted(Foo(1, 2).__dict__.items())
    [('a', 1), ('b', 2), ('c', 3)]

    """
    def init_switcher(cls):
        kind = Parameter.POSITIONAL_OR_KEYWORD
        signature = Signature(
            [Parameter(a, kind) for a in argnames]
            + [Parameter(k, kind, default=v) for k, v in defaults.items()])
        original_init = cls.__init__

        def init(self, *args, **kwargs):
            bound = signature.bind(*args, **kwargs)
            bound.apply_defaults()
            for k, v in bound.arguments.items():
                setattr(self, k, v)
            original_init(self)

        cls.__init__ = init
        return cls
    return init_switcher

There's no test case that checks that the original __init__ method is called.