Using TypedDict with invalid attribute names

Alex O'Callaghan

在 TypedDict 中使用無效的屬性名稱

原文由 Alex O'Callaghan 發布,訂閱此部落格

我之前已經介紹過如何為 TypedDict 的值使用泛型型別,不過在使用 TypedDict 時可能遇到的另一個挑戰,是鍵名並非有效的識別字的情況。在 Python 中,識別字(或名稱)可包含的字元是有限制的(一般來說只有大小寫字母 AZ、底線 _ 以及數字 09)。

一般情況下,你會透過定義類別來使用 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 進行翻譯

留言