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?