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Сообщить о неточности