Gab*_*iel 6 python python-typing typeddict
我有一个包含多个条目的现有 TypedDict:
from typing import TypedDict
class Params(TypedDict):
param1:str
param2:str
param3:str
Run Code Online (Sandbox Code Playgroud)
我想创建完全相同的 TypedDict 但所有键都是可选的,以便用户只能指定某些参数。我知道我可以做类似的事情:
class OptionalParams(TypedDict, total=False):
param1:str
param2:str
param3:str
Run Code Online (Sandbox Code Playgroud)
但这种方法的问题是我必须复制代码。有没有办法通过使键可选来继承 Params ?我尝试做
class OptionalParams(Params, total=False):
pass
Run Code Online (Sandbox Code Playgroud)
但 linter 不明白参数是可选的
你所要求的是不可能的 - 至少如果你使用 mypy - 正如你可以在Why can a Finaldictionary not beused as aliteral in TypedDict? 的评论中读到的那样 在 mypy 的 github 上:TypedDict 键重用?。Pycharm 似乎也有同样的限制,正如您问题的另外两个“失败的尝试”答案中所测试的那样。
当尝试运行此代码时:
from typing import TypeDict
params = {"a": str, "b": str}
Params = TypedDict("Params", params)
Run Code Online (Sandbox Code Playgroud)
mypy 将在源代码中给出error: TypedDict() expects a dictionary literal as the second argument, 。
| 归档时间: |
|
| 查看次数: |
3365 次 |
| 最近记录: |