Tom Anderson wrote: > On Thu, 18 Jan 2006 [EMAIL PROTECTED] wrote: > >> Is there a better way? Thoughts? > > > I was thinking along these lines: > > class NamedTuple(tuple): > def __init__(self, indices, values): > "indices should be a map from name to index" > tuple.__init__(self, values) > self.indices = indices > def __getattr__(self, name): > return self[self.indices[name]] > > colourNames = {"red": 0, "green": 1, "blue":2} > plum = NamedTuple(colourNames, (219, 55, 121)) > > The idea is that it's a tuple, but it has some metadata alongside > (shared with other similarly-shaped tuples) which allows it to resolve > names to indices - thus avoiding having two references to everything. > > However, if i try that, i get: > > Traceback (most recent call last): > File "<stdin>", line 1, in ? > TypeError: tuple() takes at most 1 argument (2 given) > > As far as i can tell, inheriting from tuple is forcing my constructor to > only take one argument. Is that the case? If so, anyone got any idea why? >
This error message is not coming from __init__, but from __new__. See http://www.python.org/2.2/descrintro.html#__new__ James -- http://mail.python.org/mailman/listinfo/python-list