
On Thu, Jul 20, 2017 at 3:35 AM, Alexander Belopolsky < alexander.belopolsky@gmail.com> wrote:
On Wed, Jul 19, 2017 at 9:08 PM, Guido van Rossum <guido@python.org> wrote:
The proposal in your email seems incomplete
The proposal does not say anything about type((x=1, y=2)). I assume it will be the same as the type currently returned by namedtuple(?, 'x y'), but will these types be cached?
I suppose that the type should be immutable at least as long as field names are the same, and the cache will occur on creation, in order to retain the 0 memory footprint. Will type((x=1, y=2)) is type((x=3, y=4)) be True?. Yes.
Maybe type((x=1, y=2))(values) will work?
It's supposed to behave like a tuple or any other primitive type (list, set, etc.), so yes.
Regarding that spec, I think there's something missing: given a list (or tuple!) of values, how do you turn it into an 'ntuple'?
As already suggested, it probably makes sense to just reuse the dict syntax:
dict([('a', 1), ('b', 2)]) {'a': 1, 'b': 2} ntuple([('a', 1), ('b', 2)]) (a=1, b=2)