树数据结构中的根节点操作
我需要一种方法来表明或强制某些方法只能在我的树数据结构的根节点上使用。我正在使用Python 2.x。
我有一个类,叫做Node(节点),我用它和另一个类Edge(边)一起构建树形数据结构(在这个例子中,边是字母,节点是单词)。
Node类中的一些方法是每个节点实例都需要的,比如get_word
,这个方法会向后遍历树,找出这个节点代表的单词。但是,其他一些Node操作,比如load_word_into_tree
,更像是类方法——它们是针对整个树的。此外,我的调用方式要求只输入根节点。如果在其他节点上调用这个方法,树就会完全乱掉。
我看到两种选择:
把
load_word_into_tree
做成实例方法,但如果在不是根节点的任何Node上调用,就抛出错误。我倾向于这个方法,但总觉得有点不对。在我看来,实例方法是每个实例都应该需要的方法,而这个方法只能用于根节点,强行加到每个Node上似乎有点浪费。把
load_word_into_tree
做成类方法,但把根节点作为参数传入。这解决了“浪费”实例方法的问题,但似乎又不太符合类方法的概念,因为它只接受一个节点作为输入。此外,我不太确定我需要每个类方法都有的cls
变量有什么用。
如果能提供关于如何实现这个功能的帮助,我将非常感激。
1 个回答
2
创建一个叫做 Tree
的类,它是 Node
类的子类,并在这个类里添加一些只适用于树的方法。
然后把你的根节点设置为 Tree
的一个实例,其他的部分则继续使用 Node
的实例。