issubclass of abstract base class Sequence

Diese List zeigt, welche Methoden Sie implementieren müssen, damit Ihre Klasse als Sequenz "angesehen" wird:__getitem__, __len__, __contains__, __iter__, __reversed__, index, undcount. Warum funktioniert diese minimale Implementierung nicht, d. H. Warumissubclass(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 :-(

Gibt es eine zusätzliche Methode, die ich implementieren muss und die ich übersehen habe? Habe ich abstrakte Basisklassen falsch verstanden? UnterklassenSequence machtissubclass RückkehrTrue natürlich, aber das vereitelt irgendwie die Idee hinter abc, nicht wahr?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage