在namedtuple中输入提示

时间:2015-12-14 14:43:25

标签: python python-3.x type-hinting namedtuple python-dataclasses

请考虑以下代码:

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

上面的代码只是一种证明我想要实现的目标的方法。 我想使用类型提示namedtuple

您是否知道如何按预期达到效果的优雅方式?

2 个答案:

答案 0 :(得分:76)

您可以使用typing.NamedTuple

来自文档

  

namedtuple的输入版

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

仅在Python 3.5及更高版本中出现

答案 1 :(得分:67)

从3.6开始的类型命名元组的首选语法是

from typing import NamedTuple

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

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

修改 从Python 3.7开始,考虑使用数据类(您的IDE可能还不支持它们进行静态类型检查):

from dataclasses import dataclass

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

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