Skip to content Skip to sidebar Skip to footer

Issubclass Of Abstract Base Class Sequence

This list shows what methods you need to implement for your class to be 'regarded' as Sequence: __getitem__, __len__, __contains__, __iter__, __reversed__, index, and count. So why

Solution 1:

Use the source, Luke!

Sequence does not implement its own __subclasshook__, and all the implementations of __subclasshook__ from the parents of Sequence have checks like this:

classIterable:
    ...

    @classmethoddef__subclasshook__(cls, C):
        if cls is Iterable:  # <<<<if _hasattr(C, "__iter__"):
                returnTruereturnNotImplemented

You can however explicitly register() your class as a Sequence:

Sequence.register(S)

As for the reason why Sequence does not implement __subclasshook__, see issue 16728 (which title was initially "collections.abc.Sequence shoud provide __subclasshook__"). The issue can be summarized by saying that a sequence can be many things, depending on the needs of who uses it:

Many algorithms that require a sequence only need __len__ and __getitem__. [...] collections.abc.Sequence is a much richer interface.

Post a Comment for "Issubclass Of Abstract Base Class Sequence"