[Python-Dev] namedtuple implementation grumble

Eric V. Smith eric at trueblade.com
Sun Jun 8 23:27:41 CEST 2014


On 6/8/2014 3:37 PM, dw+python-dev at hmmz.org wrote:
> On Sun, Jun 08, 2014 at 03:13:55PM -0400, Eric V. Smith wrote:
> 
>>> The current implementation is also *really* easy to understand,
>>> while writing out the dynamic type creation explicitly would likely
>>> require much deeper knowledge of the type machinery to follow.
> 
>> As proof that it's harder to understand, here's an example of that
>> dynamically creating functions and types:
> 
> Probably I'm missing something, but there's a much simpler non-exec
> approach, something like:
> 
>     class _NamedTuple(...):
>         ...
> 
>     def namedtuple(name, fields):
>         cls = tuple(name, (_NamedTuple,), {
>             '_fields': fields.split()
>         })
>         for i, field_name in enumerate(cls._fields):
>             prop = property(functools.partial(_NamedTuple.__getitem__, i)
>                             functools.partial(_NamedTuple.__setitem__, i))
>             setattr(cls, field_name, prop)
>         return cls

How would you write _Namedtuple.__new__?


More information about the Python-Dev mailing list