From ac5742e0fe13d318c8f9d6c043bcb5a821bb2045 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Tue, 8 Jan 2008 02:24:15 +0000 Subject: Docs on named tuple's naming conventions and limits of subclassing --- Doc/library/collections.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index be6c67f..dde7f55 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -446,7 +446,8 @@ by the :mod:`csv` or :mod:`sqlite3` modules:: print emp.name, emp.title In addition to the methods inherited from tuples, named tuples support -three additional methods and one attribute. +three additional methods and one attribute. To prevent conflicts with +field names, the method and attribute names start with an underscore. .. method:: somenamedtuple._make(iterable) @@ -533,6 +534,11 @@ faster versions that bypass error-checking and that localize variable access:: def _replace(self, _map=map, **kwds): return self._make(_map(kwds.get, ('x', 'y'), self)) +Subclassing is not useful for adding new, stored fields. Instead, simply +create a new named tuple type from the :attr:`_fields` attribute:: + + >>> Pixel = namedtuple('Pixel', Point._fields + Color._fields) + Default values can be implemented by using :meth:`_replace` to customize a prototype instance:: -- cgit v0.12