BTrees:不同的TreeSet化身之间有区别吗?

时间:2014-07-24 11:46:18

标签: python b-tree

我正在查看BTrees库并注意到有多个TreeSet(和其他)类,例如。

  • BTrees.IOBTree.TreeSet
  • BTrees.OOBTree.TreeSet
  • BTrees.LFBTree.TreeSet
  • ...

我理解BTree类对于每个类都不同,因为它接受键和值的不同类型,但是TreeSet类怎么样?

虽然经过反复试验我发现第一个字母决定了TreeSet个实例可以保存哪些类型,但第二个字母呢?它对成员的存储/检索方式有影响吗?

有没有相关的文件?

1 个答案:

答案 0 :(得分:1)

不,TreeSet类忽略了第二个字母;它们在每个XXBTree模块中提供,以确保完整性和易于导入。

在幕后,使用大量创意预处理器宏工作创建模块,使得为每个键值类型变体生成TreeSet类型也更容易。

包文档部分依赖于interface definitions;每个模块都有一个接口,其中第一个句子记录了该包中的集合包含的内容:

class IIntegerObjectBTreeModule(IBTreeModule, IMerge):
    """keys, or set values, are integers; values are objects.

    describes IOBTree and LOBTree"""

class IIntegerIntegerBTreeModule(IBTreeModule, IIMerge, IMergeIntegerKey):
    """keys, or set values, are integers; values are also integers.

    describes IIBTree and LLBTree"""
例如,

表明,对于IOBTreeIIBTree模块,设置值都是整数。因此,IOBTree.TreeSetIIBTree.TreeSet 基本上相同

package documentation然后使用这些界面定义自动生成API文档,包括per-module documentation with the (tree)set value details