请考虑以下代码:
from collections import namedtuple
point = namedtuple("Point", ("x:int", "y:int"))
上面的代码只是一种证明我想要实现的目标的方法。
我想使用类型提示namedtuple
。
您是否知道如何按预期达到效果的优雅方式?
答案 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)