Python Glossary Русский

Python 3.3+collectionsterm

collections.abc.Container

collections.abc — protocols

The protocol for membership testing with `in` (has __contains__).

Syntax

isinstance(obj, collections.abc.Container)

This check asks a single question: does the object define __contains__? The in operator is more forgiving — without __contains__ it falls back to iterating via __iter__, or even via legacy integer __getitem__ — so plenty of objects work with in yet fail the Container check. Note also that Container promises nothing about len() or iteration; those belong to Sized and Iterable.

Examples

import collections.abc as abc
print(isinstance([1], abc.Container))   # → True
print(isinstance('abc', abc.Container))   # → True
print(isinstance({'a': 1}, abc.Container))   # → True
print(isinstance(iter([1]), abc.Container))   # → False
print(1 in iter([1, 2]))   # → True

See also

Open in the full glossarydocs.python.orgReport an inaccuracy