issubclass(C, Mapping) not behaving as expected

anntzer.lee at gmail.com anntzer.lee at gmail.com
Wed May 30 03:55:00 EDT 2012


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]
i.e. C does implement Sized, Iterable and Container.

I would have expected that just as issubclass(C, Sized) checks for the presence of a "__len__" method, issubclass(C, Mapping) would check for the presence of the three methods required by each immediate superclass?

Antony



More information about the Python-list mailing list