Python 3.3+collectionsпонятие
collections.abc.MappingView
collections.abc — протоколы
Базовый класс представлений словаря (KeysView/ValuesView/ItemsView).
Синтаксис
isinstance(obj, collections.abc.MappingView)
Сам по себе MappingView почти пуст — он даёт только длину и внятный repr; операции множеств и проверку вхождения добавляют уже наследники KeysView, ValuesView и ItemsView, поэтому напрямую его почти не используют. Смысл такой проверки один: понять, что перед вами живой вид на чужой словарь, а не снимок — если нужен снимок, оберните результат в list() или set().
Примеры
import collections.abc as abc
print(isinstance({}.keys(), abc.MappingView)) # → True
print(isinstance({}.values(), abc.MappingView)) # → True
print(isinstance({}.items(), abc.MappingView)) # → True
d = {'a': 1, 'b': 2}; print(len(d.keys())) # → 2
print(isinstance([], abc.MappingView)) # → False
print(issubclass(abc.ItemsView, abc.MappingView)) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности