gpt4 book ai didi

python - 什么时候是 PersistentDict,什么时候是 Folder?

转载 作者:太空狗 更新时间:2023-10-30 02:49:09 24 4
gpt4 key购买 nike

什么时候应该使用 PersistentDict,什么时候应该使用 Folder?它们在更新、内部结构、性能等方面有什么区别?

最佳答案

PersistentMapping 只是 python dict 类型的一个实现(通过标准库 UserDict 基类)针对ZODB;每次更改 mapping 时,它都不必在最近的继承自 Persistent 的类上设置 _p_changed 标志。

Folder 是一种更丰富的类型,实现事件,与 Zope 网络界面 (ZMI) 集成,通过网络任意属性(具有类型验证的属性),Zope 权限管理,验证子项 ID、导入/导出等。子项文件夹作为属性存储在对象本身上,一些元数据存储在实例的私有(private)字典中。

当您需要任何这些额外服务(权限委托(delegate)、ID 验证等)时使用Folder,否则使用PersistentMapping。在性能方面查找或存储项目不会有太大差异;一个是下面的直接 python dict,另一个是存储项目的实例 __dict__

如果您正在寻求避免冲突,您应该查看 BTreesOOBTree 类基本上是一个持久映射,其中值存储在持久存储桶中,在大多数情况下避免冲突,并为其余情况提供冲突解决方案。

如果您想要Folder 语义和BTree 存储语义,请查看Products.BTreeFolder2 ,以及实现 Folder 接口(interface)但将子对象存储在 OOBTree 中而不是直接在实例上作为属性的附加组件。

关于python - 什么时候是 PersistentDict,什么时候是 Folder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com