Подтвердить что ты не робот

Введите подсказки в namedtuple

Рассмотрим следующий фрагмент кода:

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

Код выше - это всего лишь способ продемонстрировать, чего я пытаюсь достичь. Я хотел бы сделать namedtuple с подсказками типов.

Знаете ли вы какой-нибудь элегантный способ достижения результата, как предполагалось?

4b9b3361

Ответ 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 вперед