g.p*_*dou 6 python type-hinting typeddict
TypedDict我正在尝试使用可选键创建一个,但Optional两者都NotRequired不起作用。(我NotRequired根据这个SO答案尝试过)
class MyTypedDict(TypedDict):
my_key1: Optional[int]
my_key2: NotRequired[int]
my_variable = MyTypedDict()
Run Code Online (Sandbox Code Playgroud)
对于我得到的两把钥匙Parameter 'my_key1' unfilled和Parameter 'my_key2' unfilled
我缺少什么?
d-k*_*-bo 14
NotRequired正是您正在寻找的。Optional[int]意味着int | None,但该项目仍然是必需的。如PEP 655NotRequired[int]中所述,任何注释为可省略的项目。
注意:如果您导入Required或NotRequired来自typing_extensions(在 Python <3.11 上),您还应该导入TypedDictfrom typing_extensions。
因此,如果您的类型检查器支持此功能,它应该只会抱怨缺少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"
Run Code Online (Sandbox Code Playgroud)
您可以将必需值和可选值与继承和total. 来自mypy 文档
class MovieBase(TypedDict):
name: str
year: int
class Movie(MovieBase, total=False):
based_on: str
Run Code Online (Sandbox Code Playgroud)
Movie具有必需的键name和year, whilebased_on构造对象时可以省略
| 归档时间: |
|
| 查看次数: |
4190 次 |
| 最近记录: |