我来自 Scala 世界,那里的类型系统允许非常强大的抽象。
我现在正在尝试的非常简单,但 Python 机制让我很困惑:我想创建一个类型别名来交换
dict
的类型参数。
在 Scala 中我可以做到:
type Pam[A,B] = Map[B,A]
但是我在Python中尝试过同样的方法,但无法使其工作:
B= TypeVar('B')
A= TypeVar('A')
Tcid = dict[B,A]
def test()->Tcid[int,str]:
return {
"asd":1 ## MyPy complains
}
我已经在字典中到处交换了类型变量 B 和 A 的定义顺序,但它不起作用。
如何告诉 MyPy/Python 创建类型别名时,以什么顺序应用它们?
我不知道如何在旧版本的 Python 中执行此操作,但在 3.12 中(使用通过 PEP-695 指定的新语法)非常简单:
type Tcid[A,B] = dict[B,A]