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__
, index
ecount
. 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 é?