I've thing I still use NamedTuple for is when I want type safe heterogeneous iterable unpacking, which is only possible for tuples (and NamedTuple) eg I'd like to be able to express both:

tx, rx = trio.MemoryChanel[int]()

And:

with trio.MemoryChannel[int]() as channel:
    n.start_soon(worker, channel.recieve_channel.clone())

On Thu, 29 Jul 2021, 00:36 Chris Angelico, <rosuav@gmail.com> wrote:
On Thu, Jul 29, 2021 at 9:28 AM Paul Bryan <pbryan@anode.ca> wrote:
>
> I'm with you; since dataclasses were introduced, namedtuple has not see any use from me, though none of my uses have demanded ultra-high efficiency either.
>
> I wonder how many users are currently relying on namedtuple __getitem__ semantics though. that's functionality dataclasses do not (currently) have.
>
> Random thought I don't know the answer to: Any reason __slots__ can't be used on a dataclass to improve efficiency?
>

It can. It still doesn't get efficiency down to where a namedtuple is,
and it also doesn't make it into a tuple.

Allow me to simplify matters. You could, instead of using a regular
tuple, just use a dict with keys that are consecutive integers. This
would behave in a very similar way, and then you could subclass the
dict to change the iteration behaviour (or even rely on old-style
fallback iteration). Does that mean that tuples are nothing but
special-purpose dicts for efficiency? Not even slightly. They are
different data structures for different purposes.

It's the same with namedtuple, dataclass, and all the other different
tools we have. They serve very different purposes. And even if one of
them could truly be described as a higher-performance less-flexible
version of another, there'd still be very little benefit to
deprecating it. Remember that breaking people's code is a VERY serious
concern.

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/TWWK23EG3J2MAWDYPDLIIU2FISORYVBR/
Code of Conduct: http://python.org/psf/codeofconduct/