[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