为什么MutableMapping不是dict的实例?

时间:2017-05-24 23:01:33

标签: python dictionary isinstance

我想按照推荐here创建类似字典的对象。这是我的例子:

import collections


class DictLike(collections.MutableMapping):
    def __init__(self, *args, **kwargs):
        self.store = dict()
        self.update(dict(*args, **kwargs))

    def __getitem__(self, key):
        return self.store[key]

    def __setitem__(self, key, value):
        self.store[key] = value

    def __delitem__(self, key):
        del self.store[key]

    def __iter__(self):
        return iter(self.store)

    def __len__(self):
        return len(self.store)


print(isinstance(dict(), collections.MutableMapping))
# >> True
print(isinstance(DictLike(), dict))
# >> False

由于某些原因,我的班级isinstance的实例DictLikeFalse。为什么会这样?我希望继承和实现MutableMapping与普通字典几乎相同。

我相信可以覆盖here所描述的__instancecheck__方法,但我不知道这是不是一个好主意而且会是pythonic方式?

0 个答案:

没有答案