如何包装python dict?

Chr*_*s R 8 python dictionary

我想实现一个将包装 - 而不是子类 - python dict对象的类,这样当在后备存储中检测到更改时,我可以重新创建委派的dict对象.每次访问dict进行读取时,我打算检查后备存储中的更改.

假设我要创建一个像这样的对象; 我需要实施哪些方法?

Ale*_*lli 13

您可以继承ABC(抽象基类)collections.Mapping(或者collections.MutableMapping如果您还希望允许使用您的实例的代码来更改模拟/包装的字典,例如通过索引赋值pop等).

如果你这样做,那么,正如我所指出的文档在某种程度上间接暗示的那样,你需要实现的方法是

__len__
__iter__
__getitem__
Run Code Online (Sandbox Code Playgroud)

(对于a Mapping) - 你也应该实施

__contains__
Run Code Online (Sandbox Code Playgroud)

因为通过委托给dict你包装它可以比ABC必须应用的迭代方法快得多.

如果您需要提供一个,MutableMapping那么您还需要实现另外两种方法:

__setitem__
__delitem__    
Run Code Online (Sandbox Code Playgroud)