3

我想按照这里的建议创建一个类似字典的对象。这是我的例子:

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与普通字典几乎相同。

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

4

0 回答 0