подкласс абстрактного базового класса Sequence
Этот список показывает, какие методы вам нужно реализовать, чтобы ваш класс был «расценен» как последовательность:__getitem__
, __len__
, __contains__
, __iter__
, __reversed__
, index
, а такжеcount
, Так почему же эта минимальная реализация не работает, то есть почему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 :-(
Есть ли дополнительный метод, который мне нужен для реализации, который я упустил? Я неправильно понял абстрактные базовые классы? НаследованиеSequence
маркиissubclass
вернутьTrue
конечно, но это своего рода побеждает идею abc, не так ли?