提问人:theberzi 提问时间:8/28/2022 更新时间:8/28/2022 访问量:122
如何注释由多种鸭子类型组合而成的类型?
How to annotate a type that is a combination of multiple duck-types?
问:
假设我想将参数注释到一个函数,它应该同时满足 和 (任何其他 2+ 类型都可以适用,我只是为了示例而选择了这两个)。我将如何注释它?typing.Sized
typing.Hashable
鉴于可以使用 将类型组合为“or”,我希望像 or 这样的东西起作用,但不幸的是它没有(在 Python 3.10 上撰写本文时)。Sized | Hashable
Sized & Hashable
Sized + Hashable
这是否完全受支持,如果支持,则使用什么语法?
答:
2赞
chepner
8/28/2022
#1
Sized & Hashable
是一个合理的猜测,但不幸的是不支持交叉点类型。
您必须定义自己的子类,该子类继承自两者:
class SizedHashable(Sized, Hashable):
pass
似乎正在做出一些努力来支持交叉点类型,但除了这个简短的提及之外,我找不到任何更新。
评论
Union
typing
val: Union[...]
Union
Sized
Hashable
list
Type1 | Type2