我在 Python 中解析抽象语法树。为此,我设计了一个自定义树结构和一个对其进行操作的界面。其中,我提供了 2 种不同的搜索功能:
def findNode(self, start, name)
&
def findNodeByLineno(node, lineno, prevNode, nodeType=None)
第一个函数搜索给定名称的节点,后一个函数比较行号和节点的类型(如果给定)。我的潜意识告诉我,这是一个泄漏的界面设计,但我无法决定如何将这两个功能合并到一个通用功能中。
def findNode(self, start, name, lineno, prevNode, nodeType)
在我看来也是错误的,因为它没有明确说明参数集只能分成两组。用户不能仅根据 prevNode 或 nodeType 搜索节点。拥有两个不同的函数似乎是一个非常类似于 C 的解决方案。
有没有解决这种设计冲突的pythonic方法?