Frank Millman wrote in news:mailman.1360.1270018159.23598.python- l...@python.org in comp.lang.python:
> I came up with a simple solution that seems to work - > >>>> class MyTuple(tuple): > ... def __new__(cls, names, values): > ... for name, value in zip(names, values): > ... setattr(cls, name, value) > ... return tuple.__new__(cls, values) > ... >>>> names = ['A', 'B', 'C'] >>>> values = ['a', 'b', 'c'] >>>> >>>> tup = MyTuple(names, values) >>>> Are you aware you are adding attributes to the class here, IOW: MyTuple.C == 'c' If you want to add attibutes to the instance: class MyTuple(tuple): def __new__(cls, names, values): r = tuple.__new__(cls, values) for name, value in zip(names, values): setattr(r, name, value) return r names = ['A', 'B', 'C'] values = ['a', 'b', 'c'] tup = MyTuple(names, values) assert tup[0] == 'a' assert tup.B == 'b' try: MyTuple.C except AttributeError: pass else: assert False -- http://mail.python.org/mailman/listinfo/python-list