为什么Final字典不能作为TypedDict的字面量使用?



我正在努力完成以下任务(参见mymyy playground):

from typing import TypedDict, Final
account_schema: Final = {"name": str, "email": str}
Account = TypedDict("Account", account_schema)
AccountPatch = TypedDict("AccountPatch", account_schema, total=False)

我的想法是我可以在一个地方指定我的模式,一个版本需要所有字段(Account,当插入数据库时)和一个版本使所有字段可选(AccountPatch,当更新数据库时)。

From PEP 586:

Final限定符是声明a变量实际上是Literal

但是mypy错误:

error: TypedDict() expects a dictionary literal as the second argument

为什么TypedDict不允许Final字典作为它的第二个参数?

对于我的核心问题,是否有任何方式我可以使用相同的模式为两个TypedDicts(一个有整体,一个没有整体),而不必复制模式?

正如评论中指出的那样,这是不可能的。请参阅mymyy的github上提出的问题:TypedDict密钥重用?在这里引发错误。

定义两个TypeDict的唯一方法是重复代码
from typing import TypedDict
Account = TypedDict("Account", {"name": str, "email": str})
AccountPatch = TypedDict("AccountPatch", {"name": str, "email": str}, total=False)

相关内容

  • 没有找到相关文章

最新更新