Issubclass Of Abstract Base Class Sequence
This list shows what methods you need to implement for your class to be 'regarded' as Sequence: __getitem__, __len__, __contains__, __iter__, __reversed__, index, and count. So why
Solution 1:
Sequence
does not implement its own __subclasshook__
, and all the implementations of __subclasshook__
from the parents of Sequence
have checks like this:
classIterable:
...
@classmethoddef__subclasshook__(cls, C):
if cls is Iterable: # <<<<if _hasattr(C, "__iter__"):
returnTruereturnNotImplemented
You can however explicitly register()
your class as a Sequence
:
Sequence.register(S)
As for the reason why Sequence
does not implement __subclasshook__
, see issue 16728 (which title was initially "collections.abc.Sequence shoud provide __subclasshook__"). The issue can be summarized by saying that a sequence can be many things, depending on the needs of who uses it:
Many algorithms that require a sequence only need
__len__
and__getitem__
. [...]collections.abc.Sequence
is a much richer interface.
Post a Comment for "Issubclass Of Abstract Base Class Sequence"