[Python-ideas] recorarray: a mutable alternative to namedtuple

Joao S. O. Bueno jsbueno at python.org.br
Fri Mar 27 14:22:54 CET 2015


On 27 March 2015 at 01:40, Andrew Barnert
<abarnert at yahoo.com.dmarc.invalid> wrote:
> But how is being "an array of objects" any different from what a tuple,
> list, array.array, bytearray, bytes, str, etc. already are? What's
> specifically array-like about this type as opposed to all of those? And
> what's specifically record-like about your type compared to namedtuple,
> Struct, or SimpleNamespace?

Acutally, on my understanding, the request on this thread is for
something that is quite concrete,
existing in other languages, and that can be done in Python in a few
lines, but is not in
the stdlib:

The Python equivalent of a C Struct.

Just that.
An easy to create class, with named fields,  with possible
type-enforcement for those fields.

Or maybe it _does_ exist in Python, and it is a matter of having a
nice example in the docs:
for example a "blank" class with "__slots__"  would do it.
Or a blank class with slots that could serialize and deserialize
itself to a sequence
in a seamless way.

class Base:
   __slots__ = ()
   def __init__(self, seq=None):
       if not seq: return
       for attr, val in zip(self.slots, seq):
            setattr(self, attr, val)
   def __iter__(self):
       for attr in self.__slots__:
           yield getattr(self, attr)


def NamedList(name, fields):
   ... # split string with space separated fields, and other niceities here
   return type(name, (Base,), dict(__slots__=fields))

And 10-15 more lines if one wants type-checking, default values,
__repr__ into that. I think getting a proper recipe for this, and
publicizing it on the documentation ecosystem is enough  - maybe a
Pypi module adding some more goodies - and if that would get any
traction - the usual consideration for inclusion could apply.


More information about the Python-ideas mailing list