树数据结构中的根节点操作

时间:2013-01-28 00:05:23

标签: python oop tree class-method instance-method

需要一种方法来指示/强制某些方法只能在我的树数据结构的根Node上完成。我在Python 2.x

工作

我有一个类Node,它与另一个类Edge一起使用,用于构建树数据结构(边是字母,节点是单词,在这种情况下)。

Node的每个实例都需要Node中的一些方法,例如get_word,它在树中向后运行以确定该节点所代表的单词。但是其他Node操作,如load_word_into_tree,似乎更像是一个类方法 - 它们在整个树上运行。此外,我构建该调用的方式,它只需要根节点和根节点作为其输入。如果在任何其他节点上调用它,它将完全搞乱树。

我看到两个选项:

  • 使load_word_into_tree成为实例方法,但如果在不是根的任何节点上调用它,则会引发错误。我倾向于这个,但看起来似乎不对。在我看来,实例方​​法是每个实例都需要的方法,并且只有当它只能用于root时,才能将这个方法添加到每个Node上。这似乎是浪费。

  • 使load_word_into_tree成为一个类方法,但将根节点作为arg传递给它。这解决了“浪费”实例方法的问题,但似乎也误用了类方法的概念,因为它需要一个节点作为其输入。此外,我不确定我对每个类方法可用的cls变量有什么用处。

非常感谢有关在何处以及如何实施此功能的任何帮助。

1 个答案:

答案 0 :(得分:2)

创建Tree Node的子类,并在该类上添加仅限树的方法。

然后将您的根设为Tree的实例,图表的其余部分使用Node个实例。