On 6/8/2014 3:37 PM, dw+python-...@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__? _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com