私は、同時にサイズとIterable両方のパラメータを必要とする関数を持っています。どのようにpython3.6のヒントは、そのパラメータのサイズとiterableの両方が必要ですか?
def foo(items):
print(len(items))
for i in item:
print(i)
私はpython3.5 +から標準typing
モジュールを使用して、これを書くことができることを考えた:
from typing import Collection, Any
def foo(items: Collection[Any]):
print(len(items))
for i in item:
print(i)
foo([1, 2, 3])
# PyCharm warns: Expected type 'Collection', got 'List[int]' instead.
Collection私は必要なもののようになります。class typing.Collection(Sized, Iterable[T_co], Container[T_co])
それは警告原因はなぜ?
IterableとSizedの両方のヒントパラメータにはどうすればよいですか?
'Collection'は実際にはサイズと反復可能です([abc'バージョン](https://docs.python.org/3/library/collections.abc.html#collections.abc.Collection)も参照してください)。これは、PyCharmのバグ、またはそれが使用するプラグインのバグである可能性があります。 – jonrsharpe