This might be a bit late but I made a solution using Python Meta-Classes (decorator version below too).
When __init__ is called during run time, it grabs each of the arguments and their value and assigns them as instance variables to your class. This way you can make a struct-like class without having to assign every value manually.
My example has no error checking so it is easier to follow.
class MyStruct(type):
    def __call__(cls, *args, **kwargs):
        names = cls.__init__.func_code.co_varnames[1:]
        self = type.__call__(cls, *args, **kwargs)
        for name, value in zip(names, args):
            setattr(self , name, value)
        for name, value in kwargs.iteritems():
            setattr(self , name, value)
        return self 
Here it is in action.
>>> class MyClass(object):
    __metaclass__ = MyStruct
    def __init__(self, a, b, c):
        pass
>>> my_instance = MyClass(1, 2, 3)
>>> my_instance.a
1
>>> 
I posted it on reddit and /u/matchu posted a decorator version which is cleaner. I'd encourage you to use it unless you want to expand the metaclass version.
>>> def init_all_args(fn):
    @wraps(fn)
    def wrapped_init(self, *args, **kwargs):
        names = fn.func_code.co_varnames[1:]
        for name, value in zip(names, args):
            setattr(self, name, value)
        for name, value in kwargs.iteritems():
            setattr(self, name, value)
    return wrapped_init
>>> class Test(object):
    @init_all_args
    def __init__(self, a, b):
        pass
>>> a = Test(1, 2)
>>> a.a
1
>>>