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__?
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4