如何指定必须满足多个协议的对象?例如,假设我需要一个同时满足Reversible
和Iterable
的对象:
from typing import Iterable, Reversible
l = [1, 2, 3]
r: Reversible[int] = l
i: Iterable[int] = l
reversed(r) # fine
iter(i) # fine
reversed(i) # err since not iterable
iter(r) #err since not reversible
我想以某种方式注释一个变量,其中所有操作都是可能的。例如(组成语法):
T = TypeVar('T')
ReversibleIterable = Intersection[Reversible[T], Iterable[T]]
ri: ReversibleIterable[int] = l
reversed(ri) # fine
iter(ri) # fine
这样的事情存在吗?我使用协议、有界类型变量等搜索解决方案,但无法使其工作
关于交叉口类型,有一个旧的开放建议:typing#213。到目前为止还没有得到批准
您确实可以引入自己的交叉点协议:
相关问题 更多 >
编程相关推荐