关于python:在namedtuple中键入提示

Type hints in namedtuple

考虑以下代码:

1
2
from collections import namedtuple
point = namedtuple("Point", ("x:int","y:int"))

上面的代码只是演示我正在尝试实现什么的一种方法。我想制作带有类型提示的namedtuple

你知道怎样才能达到预期的效果吗?


您可以使用typing.NamedTuple

从文档

Typed version of namedtuple.

1
2
>>> import typing
>>> Point = typing.NamedTuple("Point", [('x', int), ('y', int)])

这只在3.5以后的Python中存在


自3.6以来,类型化命名元组的首选语法是

1
2
3
4
5
6
7
from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int = 1  # Set default value

Point(3)  # -> Point(x=3, y=1)

编辑从Python3.7开始,考虑使用数据类(您的IDE可能还不支持静态类型检查):

1
2
3
4
5
6
7
8
from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int = 1  # Set default value

Point(3)  # -> Point(x=3, y=1)