我想按照这里的建议创建一个类似字典的对象。这是我的例子:
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
与普通字典几乎相同。
我相信可以覆盖这里__instancecheck__
描述的方法,但我不知道这是否是一个好主意并且会是 pythonic 方式?