![](/img/trans.png)
[英]Python static type hint/check mismatch between Iterable[AnyStr] vs Iterable[str] | Iterable[bytes]
[英]Type Hint for finite iterable
我的 function foo
接受一個參數things
,該參數在內部變成一個列表。
def foo(things):
things = list(things)
# more code
list
構造函數接受任何可迭代的。
但是,使用typing.Iterable
注釋things
並沒有給用戶一個線索,即 iterable 必須是有限的,而不是像itertools.count()
這樣的東西。
在這種情況下使用的正確類型提示是什么?
我不知道在 Python 中實現此目的的任何可能方法,因為您無法在類型提示中提供此類約束。
但是, Collection
類型可能在您的上下文中作為一種解決方法有用:
class collections.abc.Collection
ABC 用於大小可迭代的容器類。
這要求對象具有__len__
,這是比有限更嚴格的要求。 例如,有限生成器不算作Collection
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.