我想按照推荐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
的实例DictLike
为False
。为什么会这样?我希望继承和实现MutableMapping
与普通字典几乎相同。
我相信可以覆盖here所描述的__instancecheck__
方法,但我不知道这是不是一个好主意而且会是pythonic方式?