需要一种方法来指示/强制某些方法只能在我的树数据结构的根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
变量有什么用处。
非常感谢有关在何处以及如何实施此功能的任何帮助。
答案 0 :(得分:2)
创建Tree
Node
的子类,并在该类上添加仅限树的方法。
然后将您的根设为Tree
的实例,图表的其余部分使用Node
个实例。