1

型付きフィールドを共有する単純な「構造」がいくつかあります。これらのフィールドが存在することを前提として動作する関数を定義し、それを mypy で型チェックしたいと考えています。

クローズされた mypy 機能リクエスト#3521があり、私が欲しいものの簡潔な例があります:

class Point(NamedTuple):
    x: int
    y: int
class LabeledPoint(NamedTuple):
    x: int
    y: int
    label: str

def fun(p: Point): ...
fun(LabeledPoint(1, 2, 'test'))  # OK

残念ながら、NamedTuples では、このような機能は常に許可されていないようです (クローズされた 2 つの問題: #3521#427を参照してください) 。

以前に同様の質問をしたことがあります (タイプチェックのために NamedTuple をサブクラス化する方法)、 PEP544の方向を指す素晴らしい応答がありました。PEP544 で説明されている「プロトコル」は良いアイデアですが、適切なクラス向けに設計されており、いくつかのフィールドを共有するタスクには少し多すぎます。

NamedTuples に代わるものがあれば教えてください。

4

0 に答える 0