Scala 程序员的 Python 泛型

问题描述 投票:0回答:1

我来自 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 mypy python-typing
1个回答
1
投票

我不知道如何在旧版本的 Python 中执行此操作,但在 3.12 中(使用通过 PEP-695 指定的新语法)非常简单:

type Tcid[A,B] = dict[B,A]
© www.soinside.com 2019 - 2024. All rights reserved.