Python Glossary English

Python 3.3+collectionsпонятие

collections.abc.MutableSet

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

Изменяемое множество (set): add/discard — frozenset не подходит.

Синтаксис

isinstance(obj, collections.abc.MutableSet)

Своя реализация требует пяти методов — __contains__, __iter__, __len__, add и discard — а clear, pop, remove и операции |=, &=, -=, ^= достаются миксинами. Обратите внимание на разницу контрактов: discard молча игнорирует отсутствующий элемент, а remove на нём бросает KeyError, это не синонимы. И frozenset, и представления вроде dict.keys() — это Set, но не MutableSet: добавить в них ничего нельзя.

Примеры

import collections.abc as abc
print(isinstance(set(), abc.MutableSet))         # → True
print(isinstance(frozenset(), abc.MutableSet))   # → False
print(isinstance(frozenset(), abc.Set))   # → True
print(isinstance({}.keys(), abc.Set))   # → True
s = {1, 2}; s.discard(3); print(s)   # → {1, 2}
print(sorted(abc.MutableSet.__abstractmethods__))   # → ['__contains__', '__iter__', '__len__', 'add', 'discard']

См. также

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