Reputation: 7173
I get a SyntaxError: invalid syntax
error when I try the new typed namedtuple
syntax:
class Employee(NamedTuple):
name: str
id: int
in Python 3.5.2 even though according to the documentation it should be valid from 3.5+ onwards. Am I missing something? I've imported NamedTuple
from typing
in the code.
Upvotes: 15
Views: 4398
Reputation: 1121158
The syntax to declare the types for the name
and id
fields you are using requires Python 3.6 or up. Python 3.5 does not support the variable-level type hints required.
From the typing.NamedTuple
documentation:
Changed in version 3.6: Added support for PEP 526 variable annotation syntax.
Use the backwards compatible syntax also included in the documentation:
Employee = NamedTuple('Employee', [('name', str), ('id', int)])
so listing the field names as (name, type)
tuples.
If you are using Python 3.5, you may want to switch to the Python 3.5 version of the documentation instead (there is a selector in the top-left corner, or you can just replace the 3
in the URL with 3.5
).
Upvotes: 22