issubclase de secuencia de clase base abstracta
Esta lista muestra qué métodos necesita implementar para que su clase sea "considerada" como Secuencia:__getitem__
, __len__
, __contains__
, __iter__
, __reversed__
, index
ycount
. Entonces, ¿por qué esta implementación mínima no funciona?issubclass(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 :-(
¿Hay algún método adicional que deba implementar que haya pasado por alto? ¿Entendí mal las clases base abstractas? SubclasesSequence
haceissubclass
regresoTrue
por supuesto, pero eso frustra un poco la idea detrás de abc, ¿no?