首页 > 解决方案 > Python:参数同时遵守两个合同的提示语法

问题描述

我想用类型提示注释我的 Python 3 代码,并且努力寻找交集类型的语法(意味着对象同时尊重所有指定类的方法)。

就像是:

def func(ob: Type[A & B]):
    ob.canA()     # static type checker should allow methods from A & B
    ob.canB()     #
    ob.cannotC()  # but not from some other class C

您可以查看竞争世界中的交集类型: https ://www.typescriptlang.org/docs/handbook/unions-and-intersections.html

它模仿了我所熟悉的(Java 接口)。

请注意,我在这里问了同样的问题:https ://www.reddit.com/r/learnpython/comments/lvp5c1/hint_syntax_that_argument_obeys_two_contracts/并且只得到了一个关于使用非交集类型的联合类型的不相关响应。

我在官方规范中找不到任何有用的东西:

以下规格:

说:

我们可能会补充:

  • 交点[t1, t2, ...]。作为每个 t1 的子类型的类型,等等都是 this 的子类型。(与 Union 相比,它的定义中至少有一个而不是每个。)

所以可能是Python中还没有交叉点......

标签: pythontype-hinting

解决方案


推荐阅读