A tuple in order to pass returned values ?
Cameron Simpson
cs at zip.com.au
Fri Oct 7 06:24:29 EDT 2011
On 07Oct2011 11:43, Jean-Michel Pichavant <jeanmichel at sequans.com> wrote:
| namedtuple sounds great (if you don't use unpacking :o) ), too bad
| it is available only from python 2.6.
It is easy enough to roll your own.
Here's some example code with several flaws (it claims tuplehood,
but is actually a list; it is not immutable; it takes a list of field
names instead of a space separated string as namedtuple does) and isn't
very tested.
But feel free to take it and adapt it:
def NamedTupleClassFactory(*fields):
''' Construct classes for named tuples a bit like the named tuples
coming in Python 2.6/3.0.
NamedTupleClassFactory('a','b','c') returns a subclass of "list"
whose instances have properties .a, .b and .c as references to
elements 0, 1 and 2 respectively.
'''
class NamedTuple(list):
for i in range(len(fields)):
f=fields[i]
exec('def getx(self): return self[%d]' % i)
exec('def setx(self,value): self[%d]=value' % i)
exec('%s=property(getx,setx)' % f)
return NamedTuple
def NamedTuple(fields,iter=()):
''' Return a named tuple with the specified fields.
Useful for one-off tuples/lists.
'''
return NamedTupleClassFactory(*fields)(iter)
More old code:-( I can see I need to go back to that and make it
cleaner. Surely I can get rid of the exec(0s at least:-)
Cheers,
--
Cameron Simpson <cs at zip.com.au> DoD#743
http://www.cskk.ezoshosting.com/cs/
Hacker: One who accidentally destroys.
Wizard: One who recovers afterwards.
More information about the Python-list
mailing list