【发布时间】:2019-03-16 04:45:37
【问题描述】:
在Java、C#中,泛型方法可以有一个带约束的类型参数来定义必须实现的接口。
static <T extends Iterable<Integer> & Comparable<Integer>> void test(T p) {
}
在Python中,如果我想使用类型提示来指定一个变量必须继承类A和B,我该怎么做?我检查了打字模块,它只有一个联合,这意味着变量的类型可以是任何提示,而不是所有提示。
创建一个继承 A 和 B 的新类 C 似乎是一个解决方案,但看起来很麻烦。
【问题讨论】:
-
如果有一个类继承自 A 和 B,那么你应该把那个类放在那里。这是一个类型提示,而不是继承提示。
-
多个类可以继承A和B,如T1(A, B, C), T2(A, B, D)。然后我定义了一个函数,它的参数必须继承A和B:“def func(obj)”。我想使用类型提示来显示这个要求。
-
嗯,需求不是类型。您应该记住,与 Java 和 C 不同,Python 不是静态类型语言。它使用鸭式打字的概念。因此,这些类型 hints 的用途与 Java 中的接口不同。它们主要用于文档和 IDE 功能,例如自动建议。
-
如果不支持它会看起来很奇怪。打字模块中的union可以表示“any”,而“all”不能表示?
标签: python python-typing