Skip to content

Commit

Permalink
Issue 29310: Document typing.NamedTuple default argument syntax
Browse files Browse the repository at this point in the history
  • Loading branch information
rhettinger committed Jan 29, 2017
1 parent dc4ce0e commit e53bd8e
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions Doc/library/typing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -735,10 +735,21 @@ The module defines the following classes, functions and decorators:

Employee = collections.namedtuple('Employee', ['name', 'id'])

The resulting class has one extra attribute: ``_field_types``,
giving a dict mapping field names to types. (The field names
are in the ``_fields`` attribute, which is part of the namedtuple
API.)
To give a field a default value, you can assign to it in the class body::

class Employee(NamedTuple):
name: str
id: int = 3

employee = Employee('Guido')
assert employee.id == 3

Fields with a default value must come after any fields without a default.

The resulting class has two extra attributes: ``_field_types``,
giving a dict mapping field names to types, and ``field_defaults``, a dict
mapping field names to default values. (The field names are in the
``_fields`` attribute, which is part of the namedtuple API.)

Backward-compatible usage::

Expand All @@ -747,6 +758,9 @@ The module defines the following classes, functions and decorators:
.. versionchanged:: 3.6
Added support for :pep:`526` variable annotation syntax.

.. versionchanged:: 3.6.1
Added support for default values.

.. function:: NewType(typ)

A helper function to indicate a distinct types to a typechecker,
Expand Down

0 comments on commit e53bd8e

Please sign in to comment.