Я вижу странное несоответствие в поведении между Python 2 и 3.
В Python 3 вещи работают нормально:
Python 3.5.0rc2 (v3.5.0rc2:cc15d736d860, Aug 25 2015, 04:45:41) [MSC v.1900 32 b
it (Intel)] on win32
>>> from collections import Sequence
>>> isinstance(bytearray(b"56"), Sequence)
True
Но не в Python 2:
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on wi
n32
>>> from collections import Sequence
>>> isinstance(bytearray("56"), Sequence)
False
Результаты кажутся согласованными в младших версиях как Python 2.x, так и 3.x. Это известная ошибка? Это ошибка? Есть ли какая-то логика в этой разнице?
На самом деле меня больше беспокоит функция C API PySequence_Check
, которая правильно идентифицирует объект типа PyByteArray_Type
как раскрывающий протокол последовательности, который, глядя на исходный код кажется, что он должен, но любое понимание этого всего очень приветствуется.