from typing import List class Bar: def list_to_none(self, foo: List[Foo]) -> None: # Bad for f in foo: self.something(f) こういうメソッドを書くのはよろしくない。 中でやっていることはiterationでしかないのに、listを継承しているものしか受け取れないようになっているからだ。 この場合は、できるだけlistに近い構造を期待している場合はSequence[T]を、単にiterationさえできればいいならCollection[T]を受け取るようにすればよい。 from typing import Sequence class Bar: def seq_to_none(foo: Sequence[Foo]) -> None: # Good! for f in foo: