Python Glossary English

Python 3.3+collectionsпонятие

collections.abc.MutableMapping

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

Изменяемое отображение (dict): плюс __setitem__/__delitem__/update.

Синтаксис

isinstance(obj, collections.abc.MutableMapping)

Проверяйте isinstance(obj, MutableMapping), когда важно «умеет читать и менять по ключу», а не «это буквально dict»: так проходят и os.environ, и ваши собственные классы-отображения. При наследовании достаточно написать пять методов — __getitem__, __setitem__, __delitem__, __iter__ и __len__ — остальное (get, pop, setdefault, update, items, keys) приедет миксинами. Импортировать только из collections.abc: старые псевдонимы вида collections.MutableMapping удалены в Python 3.10.

Примеры

import collections.abc as abc
from types import MappingProxyType
print(isinstance({}, abc.MutableMapping))   # → True
d = {'a': 1}; d.update(b=2); print(d)   # → {'a': 1, 'b': 2}
print(isinstance(MappingProxyType({'a': 1}), abc.Mapping))   # → True
print(isinstance(MappingProxyType({'a': 1}), abc.MutableMapping))   # → False
print(sorted(abc.MutableMapping.__abstractmethods__))   # → ['__delitem__', '__getitem__', '__iter__', '__len__', '__setitem__']

См. также

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