This list
显示了需要为类实现哪些方法才能“视”为序列:
__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背后的想法,不是吗?