Python Glossary English

Python 3.3+collectionsпонятие

collections.abc.Mapping

collections.abc — протоколы

Протокол неизменяемого отображения ключ→значение (доступ по ключу, len, in).

Синтаксис

isinstance(obj, collections.abc.Mapping)

«Неизменяемое» здесь означает, что протокол не требует записи, а вовсе не то, что объект нельзя менять: обычный dict тоже проходит эту проверку, так что она не защитит вас от изменяемого словаря на входе. Если функции нужна запись, проверяйте MutableMapping. А при наследовании от Mapping достаточно написать __getitem__, __len__ и __iter__ — get, keys, items, values, in и сравнение достанутся бесплатно.

Примеры

import collections.abc as abc
import types
print(isinstance({}, abc.Mapping))   # → True
print(isinstance([1, 2], abc.Mapping))  # → False
print(isinstance({}, abc.MutableMapping))  # → True
print(isinstance(types.MappingProxyType({'a': 1}), abc.Mapping))  # → True
print(isinstance(types.MappingProxyType({'a': 1}), abc.MutableMapping))  # → False

См. также

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