Введите подсказки в namedtuple
Рассмотрим следующий фрагмент кода:
from collections import namedtuple
point = namedtuple("Point", ("x:int", "y:int"))
Код выше - это всего лишь способ продемонстрировать, чего я пытаюсь достичь.
Я хотел бы сделать namedtuple
с подсказками типов.
Знаете ли вы какой-нибудь элегантный способ достижения результата, как предполагалось?
Ответы
Ответ 1
Предпочтительный синтаксис для типизированного именованного кортежа начиная с 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, рассмотрите возможность использования dataclasses
(ваша IDE может еще не поддерживать их для статической проверки типов):
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int = 1 # Set default value
Point(3) # -> Point(x=3, y=1)
Ответ 2
Вы можете использовать typing.NamedTuple
Из документов
Типичная версия namedtuple
.
>>> import typing
>>> Point = typing.NamedTuple("Point", [('x', int), ('y', int)])
Это присутствует только в Python 3.5 вперед