Explicit is better than implicit ... so sure, you could make it more concise: def __init__(self,a,b,c): for k,v in locals().items(): if k != "self": setattr(self,k,v) The better question is: should you? ... that said if you want a named tuple I would recommend using a namedtuple (remember tuples have certain conditions attached to them) ... perhaps you want an OrderedDict or even just a dict ...