typing.Iterable
является общим, так что вы можете сказать, что он является итеративным, в аннотациях вашего типа, например, Iterable[int]
для итерируемого целого числа.
Итерируемый набор является абстрактным базовым классом.Они могут включать дополнительные методы mixin , чтобы упростить реализацию интерфейса при создании ваших собственных подклассов.
Теперь получается, что Iterable
не включает ни одного из этих mixin, ноэто часть интерфейса других абстрактных базовых классов, которые это делают.
Теоретически, итеративная типизация работает для любого из них, но для этого используется какая-то странная магия метакласса, поэтому они не ведут себя точно так жево всех случаях.Вам действительно не нужны универсальные шаблоны во время выполнения, поэтому нет необходимости использовать их вне аннотаций типов и тому подобного.Итерируемые коллекции с меньшей вероятностью вызовут проблемы в качестве суперкласса.
Короче говоря, вы должны использовать итеративную типизацию в аннотациях типов, но коллекции итерируемые как суперкласс.