我正在尝试创建一个带有可选键的TypedDict,但两者都不是Optional,也不是NotRequired不工作的。(我尝试了基于NotRequired的这就是答案)
class MyTypedDict(TypedDict):
my_key1: Optional[int]
my_key2: NotRequired[int]
my_variable = MyTypedDict()这两把钥匙我都有Parameter 'my_key1' unfilled和Parameter 'my_key2' unfilled
我遗漏了什么?
发布于 2022-05-23 23:39:47
NotRequired正是你要找的东西。Optional[int]的意思是int | None,但项目仍然是必需的。任何被注释为NotRequired[int]的项目都可以按照佩普655中的说明进行省略。
注:--如果您从typing_extensions导入Required或NotRequired (在Python3.11上),也应该从typing_extensions导入TypedDict。
因此,如果您的类型检查器支持此功能,它只会抱怨缺少my_key1。
# Python >= 3.11
from typing import Optional, NotRequired, TypedDict
# Python < 3.11
from typing import Optional
from typing_extensions import NotRequired, TypedDict
class MyTypedDict(TypedDict):
my_key1: Optional[int]
my_key2: NotRequired[int]
my_variable = MyTypedDict()
# mypy error: Missing key "my_key1" for TypedDict "MyTypedDict"
# pyright error: Argument missing for parameter "my_key1"发布于 2022-05-23 22:31:09
您可以将必需值和可选值与继承和total混合使用。来自伤病员
class MovieBase(TypedDict):
name: str
year: int
class Movie(MovieBase, total=False):
based_on: str
Movie需要键name和year,而在构造对象时可以忽略based_on。
https://stackoverflow.com/questions/72326834
复制相似问题