问题
Consider following piece of code:
from collections import namedtuple
point = namedtuple("Point", ("x:int", "y:int"))
The Code above is just a way to demonstrate as to what I am trying to achieve.
I would like to make namedtuple
with type hints.
Do you know any elegant way how to achieve result as intended?
回答1:
The prefered Syntax for a typed named tuple since 3.6 is
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int = 1 # Set default value
Point(3) # -> Point(x=3, y=1)
Edit Starting Python 3.7, consider using dataclasses (your IDE may not yet support them for static type checking):
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int = 1 # Set default value
Point(3) # -> Point(x=3, y=1)
回答2:
You can use typing.NamedTuple
From the docs
Typed version of
namedtuple
.
>>> import typing
>>> Point = typing.NamedTuple("Point", [('x', int), ('y', int)])
This is present only in Python 3.5 onwards
来源:https://stackoverflow.com/questions/34269772/type-hints-in-namedtuple