Python Glossary English

все Python 3до 3.10collectionsпонятие

collections.Mapping

удалено

Абстрактные классы (Mapping, Sequence, Iterable и др.), доступные прямо из collections. Удалены в Python 3.10 — импортируйте их из collections.abc.

Синтаксис

from collections import Mapping  # до 3.10

До Python 3.3 абстрактные классы коллекций лежали прямо в collections. В 3.3 их перенесли в подмодуль collections.abc, чтобы отделить протоколы от конкретных типов вроде deque и Counter, а старые имена оставили псевдонимами; в 3.10 псевдонимы убрали. Касается всех ABC: Mapping, MutableMapping, Sequence, MutableSequence, Set, MutableSet, Iterable, Iterator, Generator, Callable, Hashable, Sized, Container и других. Как переписать: from collections import Mapping → from collections.abc import Mapping; collections.Sequence → collections.abc.Sequence. Конкретные классы (OrderedDict, defaultdict, namedtuple) остаются в collections.

Примеры

# Python 3.10+
try:
    from collections import Mapping
except ImportError as e:
    print(type(e).__name__)  # → ImportError
# Python 3.10+
from collections.abc import Mapping, Sequence, Iterable
print(isinstance({}, Mapping))  # → True
print(isinstance([], Sequence), isinstance('ab', Iterable))  # → True True
from collections import Mapping, Sequence
print(isinstance({}, Mapping), isinstance([], Sequence))  # → True True

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности