Python Glossary English

Python 3.3+collectionsпонятие

collections.abc.MutableSequence

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

Изменяемая последовательность (list): плюс append/insert/__setitem__ — кортеж не подходит.

Синтаксис

isinstance(obj, collections.abc.MutableSequence)

Для собственного класса нужно реализовать __getitem__, __setitem__, __delitem__, __len__ и insert — а append, extend, pop, remove, reverse и += появятся из миксинов сами. Как проверка типа это шире, чем isinstance(x, list): подойдут bytearray и collections.deque, а str и tuple отвалятся, потому что неизменяемы. В аннотации параметра MutableSequence честнее list — он прямо сообщает, что функция будет менять переданное на месте.

Примеры

import collections.abc as abc
print(isinstance([], abc.MutableSequence))   # → True
print(isinstance((), abc.MutableSequence))   # → False
print(isinstance((), abc.Sequence))   # → True
print(isinstance('abc', abc.MutableSequence))   # → False
print(isinstance(bytearray(b'ab'), abc.MutableSequence))   # → True
lst = [1, 2]; lst.insert(0, 0); print(lst)   # → [0, 1, 2]

См. также

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