¿Cuál es la mejor manera de hacer la asignación automática de atributos en Python? ¿Es una buena idea?

En lugar de escribir código como este cada vez que defino una clase:

class Foo(object): 
     def __init__(self, a, b, c, d, e, f, g):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
        self.f = f
        self.g = g

Podría usaresta receta para la asignación automática de atributos.

class Foo(object):
     @autoassign
     def __init__(self, a, b, c, d, e, f, g):
        pass

Dos preguntas:

¿Existen inconvenientes o dificultades asociadas con este atajo?¿Hay una mejor manera de lograr una comodidad similar?

Respuestas a la pregunta(9)

Su respuesta a la pregunta