issubclasse da classe base abstrata Sequence

Esta lista mostra quais métodos você precisa implementar para que sua classe seja "considerada" como Sequência:__getitem__, __len__, __contains__, __iter__, __reversed__, indexecount. Então, por que essa implementação mínima não funciona, ou seja, por queissubclass(S, Sequence) is False?

from collections import *


class S(object):
    def __getitem__(self, item):
        raise IndexError

    def __len__(self):
        return 0

    def __contains__(self, item):
        return False

    def __iter__(self):
        return iter(())

    def __reversed__(self):
        return self

    def index(self, item):
        raise IndexError

    def count(self, item):
        return 0


issubclass(S, Iterable)   # True  :-)
issubclass(S, Sized)      # True  :-)
issubclass(S, Container)  # True  :-)
issubclass(S, Sequence)   # False :-(

Existe um método adicional que eu preciso implementar que eu negligenciei? Eu entendi errado as classes base abstratas? SubclassificaçãoSequence fazissubclass RetornaTrue é claro, mas isso meio que derrota a idéia por trás do ABC, não é?

questionAnswers(1)

yourAnswerToTheQuestion