【发布时间】:2013-01-28 00:05:23
【问题描述】:
需要一种方法来指示/强制某些方法只能在我的树数据结构的根Node 上执行。我正在使用 Python 2.x
我有一个类 Node,我将它与另一个类 Edge 结合使用来构建树数据结构(在这种情况下,边是字母,节点是单词)。
Node 的每个实例都需要 Node 中的一些方法,例如 get_word,它在树中向后运行以确定该 Node 表示的单词。但是其他 Node 操作,比如load_word_into_tree,看起来更像是一个类方法——它们对整个树进行操作。此外,按照我构建该调用的方式,它只需要根节点和根节点作为其输入。如果在任何其他节点上调用它,它会完全弄乱树。
我看到两个选项:
将
load_word_into_tree设为实例方法,但如果在任何非根节点上调用它,则会引发错误。我倾向于这个,但似乎有些不对劲。在我看来,实例方法是每个实例都应该需要的方法,并且在只能用于根的情况下将此方法附加到每个节点上似乎是一种浪费。将
load_word_into_tree设为类方法,但将根节点作为参数传递给它。这解决了“浪费”实例方法的问题,但似乎也滥用了类方法的概念,因为它采用单个节点作为其输入。此外,我不确定对于每个类方法都可用的所需cls变量有什么用处。
任何有关在何处以及如何实现此功能的帮助将不胜感激。
【问题讨论】:
标签: python oop tree class-method instance-method