<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-11-30 8:11 GMT-08:00 Guido van Rossum <span dir="ltr"><<a href="mailto:guido@python.org" target="_blank">guido@python.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Wed, Nov 30, 2016 at 7:09 AM, Ethan Furman <span dir="ltr"><<a href="mailto:ethan@stoneleaf.us" target="_blank">ethan@stoneleaf.us</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-m_2702920655909557823m_-3687747621873015580gmail-">On 11/30/2016 02:32 AM, Jelte Fennema wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
It would be nice to have a supported way to add defaults to namedtuple,<br>
 so the slightly hacky solution here does not have to be used:<br>
 <a href="http://stackoverflow.com/a/18348004/2570866" rel="noreferrer" target="_blank">http://stackoverflow.com/a/18<wbr>348004/2570866</a><br>
</blockquote>
<br></span>
Actually, the solution right below it is better [1]:<br>
<br>
--> from collections import namedtuple<br>
--> class Node(namedtuple('Node', ['value', 'left', 'right'])):<br>
-->     __slots__ = ()<br>
-->     def __new__(cls, value, left=None, right=None):<br>
-->         return super(Node, cls).__new__(cls, value, left, right)<br>
<br>
But even more readable than that is using the NamedTuple class from my aenum [3] library (and on SO as [3]):<br>
<br>
--> from aenum import NamedTuple<br>
--> class Node(NamedTuple):<br>
-->     val = 0<br>
-->     left = 1, 'previous Node', None<br>
-->     right = 2, 'next Node', None<br>
<br>
shamelessly-plugging-my-own-so<wbr>lutions'ly yrs,<br></blockquote><div><br></div></span><div>Ditto: with PEP 526 and the latest typing.py (in 3.6) you will be able to do this:<br><br></div><div>        class Employee(NamedTuple):<br>            name: str<br>            id: int<br><br></div><div>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.)<span class="gmail-m_2702920655909557823HOEnZb"><font color="#888888"><br></font></span></div></div><span class="gmail-m_2702920655909557823HOEnZb"><font color="#888888"><br></font></span></div></div></blockquote><div>Implemented this in <a href="https://github.com/python/typing/pull/338">https://github.com/python/typing/pull/338</a> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class="gmail-m_2702920655909557823HOEnZb"><font color="#888888">-- <br><div class="gmail-m_2702920655909557823m_-3687747621873015580gmail_signature">--Guido van Rossum (<a href="http://python.org/%7Eguido" target="_blank">python.org/~guido</a>)</div>
</font></span></div></div>
<br>______________________________<wbr>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/codeofco<wbr>nduct/</a><br></blockquote></div><br></div></div>