[Python-ideas] Add optional defaults to namedtuple

Jelle Zijlstra jelle.zijlstra at gmail.com
Fri Dec 2 01:14:29 EST 2016


2016-11-30 8:11 GMT-08:00 Guido van Rossum <guido at python.org>:

> On Wed, Nov 30, 2016 at 7:09 AM, Ethan Furman <ethan at stoneleaf.us> wrote:
>
>> On 11/30/2016 02:32 AM, Jelte Fennema wrote:
>>
>> It would be nice to have a supported way to add defaults to namedtuple,
>>>  so the slightly hacky solution here does not have to be used:
>>>  http://stackoverflow.com/a/18348004/2570866
>>>
>>
>> Actually, the solution right below it is better [1]:
>>
>> --> from collections import namedtuple
>> --> class Node(namedtuple('Node', ['value', 'left', 'right'])):
>> -->     __slots__ = ()
>> -->     def __new__(cls, value, left=None, right=None):
>> -->         return super(Node, cls).__new__(cls, value, left, right)
>>
>> But even more readable than that is using the NamedTuple class from my
>> aenum [3] library (and on SO as [3]):
>>
>> --> from aenum import NamedTuple
>> --> class Node(NamedTuple):
>> -->     val = 0
>> -->     left = 1, 'previous Node', None
>> -->     right = 2, 'next Node', None
>>
>> shamelessly-plugging-my-own-solutions'ly yrs,
>>
>
> Ditto: with PEP 526 and the latest typing.py (in 3.6) you will be able to
> do this:
>
>         class Employee(NamedTuple):
>             name: str
>             id: int
>
> We should make it so that the initial value in the class is used as the
> default value, too. (Sorry, this syntax still has no room for a docstring
> per attribute.)
>
> Implemented this in https://github.com/python/typing/pull/338

> --
> --Guido van Rossum (python.org/~guido <http://python.org/%7Eguido>)
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20161201/2d04e120/attachment.html>


More information about the Python-ideas mailing list