型付きフィールドを共有する単純な「構造」がいくつかあります。これらのフィールドが存在することを前提として動作する関数を定義し、それを 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 に代わるものがあれば教えてください。