Python:将变量注释为TypedAct的键

2024-09-30 08:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上是this(尚未回答)问题的浓缩版本

我想声明一个变量应该只接受作为TypedDict中键的值

目前,我正在定义一个单独的Literal类型来表示键,例如:

from typing import Literal, TypedDict


class MyTD(TypedDict):
    a: int
    b: int


mytd = MyTD(a=1, b=2)

key = "a"

mytd[key]  # error: TypedDict key must be a string literal; expected one of ('a', 'b')

MyTDKeyT = Literal["a", "b"]

typed_key: MyTDKeyT = "b"

mytd[typed_key]  # no error

我希望能够替换Literal定义,因为所有希望最小化重复代码的常见原因

伪代码:

key: Keys[MyTD] = "a"
mytd[key]  # would be no error
not_key: Keys[MyTD] = "z"  # error

有没有办法做到这一点

为了澄清,鉴于mypy可以告诉我键类型需要是“a”或“b”的文本,我希望有一种不太容易出错的方法来将变量注释到该类型,而不是必须并排维护两个单独的键列表,一个在TypedDict定义中,一个在Literal定义中


Tags: keyno代码类型定义errorbekeys

热门问题