web-dev-qa-db-ja.com

namedtupleのタイプヒント

次のコードを検討してください。

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

上記のコードは、私が達成しようとしていることを示すための方法にすぎません。型ヒントを使用してnamedtupleを作成したいと思います。

意図したとおりの結果を達成するためのエレガントな方法を知っていますか?

86
Pavel Hanpari

3.6以降の名前付きタプルの優先構文は

from typing import NamedTuple

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

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

EditPython 3.7、 dataclasses (your = IDEは静的型チェックのためにそれらをまだサポートしていないかもしれません):

from dataclasses import dataclass

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

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

typing.NamedTuple

ドキュメントから

namedtupleの型付きバージョン

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

これはPython 3.5以降でのみ存在します

87
Bhargav Rao