[Python-ideas] Adding "Typed" collections/iterators to Python
Greg Ewing
greg.ewing at canterbury.ac.nz
Mon Dec 19 07:48:32 CET 2011
Nick Coghlan wrote:
> What you seem to be asking for is a general purpose typed container
> factory along the following lines:
>
> def typed_container(container_type, data_type):
> class TypedContainer(container_type):
> def __getattr__(self, attr):
> data_type_attr = getattribute(data_type, attr)
> if callable(data_type_attr):
> _result_type = type(self)
> def _broadcast(*args, **kwds):
> _result_type(data_type_attr(x, *args, **kwds) for x in self)
> return _broadcast
> return data_type_attr
> return TypedContainer
Seems to me this would be better described as a "broadcasting container"
than a "typed container". The only use it makes of the element type is
to speed things up a bit by extracting bound methods. So the typed-ness
is not an essential feature of its functionality, just something
required to support an optimisation.
Extended to handle the various operator methods, this might be a useful
thing to have around. In conjunction with array.array, it could provide
a kind of "numpy lite" for when depending on full-blown numpy would seem
like overkill.
--
Greg
More information about the Python-ideas
mailing list