基本上是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
定义中
目前没有回答
相关问题 更多 >
编程相关推荐