我想实现一个将包装 - 而不是子类 - 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)
| 归档时间: |
|
| 查看次数: |
4891 次 |
| 最近记录: |