首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TypedDict中有可选的键?

如何在TypedDict中有可选的键?
EN

Stack Overflow用户
提问于 2022-05-21 05:09:33
回答 2查看 917关注 0票数 2

我正在尝试创建一个带有可选键的TypedDict,但两者都不是Optional,也不是NotRequired不工作的。(我尝试了基于NotRequired这就是答案)

代码语言:javascript
复制
class MyTypedDict(TypedDict):
    my_key1: Optional[int]
    my_key2: NotRequired[int]

my_variable = MyTypedDict()

这两把钥匙我都有Parameter 'my_key1' unfilledParameter 'my_key2' unfilled

我遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2022-05-23 23:39:47

NotRequired正是你要找的东西。Optional[int]的意思是int | None,但项目仍然是必需的。任何被注释为NotRequired[int]的项目都可以按照佩普655中的说明进行省略。

注:--如果您从typing_extensions导入RequiredNotRequired (在Python3.11上),也应该从typing_extensions导入TypedDict

因此,如果您的类型检查器支持此功能,它只会抱怨缺少my_key1

代码语言:javascript
复制
# 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"
票数 4
EN

Stack Overflow用户

发布于 2022-05-23 22:31:09

您可以将必需值和可选值与继承和total混合使用。来自伤病员

代码语言:javascript
复制
class MovieBase(TypedDict):
    name: str
    year: int

class Movie(MovieBase, total=False):
    based_on: str

Movie需要键nameyear,而在构造对象时可以忽略based_on

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72326834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档