gpt4 book ai didi

python - 如何在 Python 类型提示中表达多重继承?

转载 作者:太空狗 更新时间:2023-10-29 21:11:36 24 4
gpt4 key购买 nike

在Java、C#中,泛型方法可以有一个带有约束的类型参数来定义必须实现的接口(interface)。

static <T extends Iterable<Integer> & Comparable<Integer>> void test(T p) {

}

在Python中,如果我想使用类型提示来指定一个变量必须继承类A和B,我该怎么办?我检查了 typing 模块,它只有一个 Union ,这意味着变量的类型可以是任何提示,而不是所有提示。

创建一个继承 A 和 B 的新类 C 似乎是一种解决方案,但看起来很麻烦。

最佳答案

该类定义等同于:

class MyIter(Iterator[T], Generic[T]):
...

您可以对泛型使用多重继承:

from typing import TypeVar, Generic, Sized, Iterable, Container, Tuple

T = TypeVar('T')

class LinkedList(Sized, Generic[T]):
...

K = TypeVar('K')
V = TypeVar('V')

class MyMapping(Iterable[Tuple[K, V]],
Container[Tuple[K, V]],
Generic[K, V]):
...

在不指定类型参数的情况下对泛型类进行子类化时,每个位置都假定为 Any。在下面的示例中,MyIterable 不是通用的,而是隐式继承自 Iterable[Any]:

from typing import Iterable

class MyIterable(Iterable): # Same as Iterable[Any]
...

不支持通用元类。

关于python - 如何在 Python 类型提示中表达多重继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52754339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com