我正在查看BTrees库并注意到有多个TreeSet
(和其他)类,例如。
BTrees.IOBTree.TreeSet
BTrees.OOBTree.TreeSet
BTrees.LFBTree.TreeSet
我理解BTree
类对于每个类都不同,因为它接受键和值的不同类型,但是TreeSet
类怎么样?
虽然经过反复试验我发现第一个字母决定了TreeSet
个实例可以保存哪些类型,但第二个字母呢?它对成员的存储/检索方式有影响吗?
有没有相关的文件?
答案 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"""
例如,表明,对于IOBTree
和IIBTree
模块,设置值都是整数。因此,IOBTree.TreeSet
和IIBTree.TreeSet
基本上相同。
package documentation然后使用这些界面定义自动生成API文档,包括per-module documentation with the (tree)set value details。