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 进行翻译

评论