Using TypedDict with invalid attribute names

Alex O'Callaghan

無効な属性名で TypedDict を使う

原文は Alex O'Callaghan により に公開されました。 このブログを購読する

以前、TypedDict の値にジェネリック型を使用する方法について解説しましたが、TypedDict を使用する際に直面する別の課題として、キー名が有効な識別子ではないケースがあります。Python では、識別子(名前)に使用できる文字は制限されており、一般的には大文字・小文字のアルファベット A から Z、アンダースコア _、そして数字 0 から 9 です。

通常、TypedDict はクラスを定義して使用します:

from typing import TypedDict

class Book(TypedDict):
  id: int
  name: str

book: Book = {"id": 123, "name": "To Kill A Mockingbird"}

しかし、この構文はキーの中に有効な識別子ではないものがある場合、たとえばピリオド . やハイフン - が含まれている場合には使えません:

from typing import TypedDict

class Book(TypedDict):
  id: int
  name: str
  some-hyphen-field: str
  field.dot: str

このような場合には、関数構文を使用できます:

from typing import TypedDict

Book = TypedDict(
  'Book',
  {
    "id": int,
    "name": str,
    "some-hyphen-field": str,
    "field.dot": str
  }
)

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント