from collections import *
class C(object):
def __iter__(self): pass
def __contains__(self, i): pass
def __len__(self): pass
def __getitem__(self, i): pass
issubclass(C, Mapping) => False
[issubclass(C, cls) for cls in Mapping.__mro__] => [False, True, True, True, True]
つまり、C は Sized、Iterable、Container を実装しています。
メソッドissubclass(C, Sized)
の存在をチェックするのと同じように、各直下のスーパークラスに必要な 3 つのメソッドの存在をチェックすると予想していたでしょうか?__len__
issubclass(C, Mapping)