【发布时间】:2022-10-17 18:00:35
【问题描述】:
我有以下代码sn-p:
from typing import TypedDict
class Super(TypedDict):
foo: int
class SubA(Super):
bar: int
class SubB(Super):
zap: int
def print_props(inp: Super, key: str):
print(inp[key])
当我使用SubA 或SubB 的实例调用print_props 方法时,它是有效的,因为它们是Super 的子类型。
但是mypy 会抱怨参数key,因为它必须是文字"foo"。
是否可以给mypy 提示,以便它能够确定哪些键是有效的?
例如:“当使用SubB 的实例调用print_props 时,只有"foo" 和"zap" 有效。”
我看了一下generics;我认为可以声明一个仅限于Super 的子类型的类型变量,但是是否可以表达类型变量的具体类型(SubA 或SubB)与文字值之间的依赖关系那么 key 应该被限制在什么地方?
【问题讨论】:
-
不过,
SubA和SubB不是Super的子类型。它们是TypedDict的子类。
标签: python mypy python-typing strong-typing