我正在尝试模仿名为"前缀树"在Python中。
我的班级有__contains__
方法,所以我可以查看这棵树中是否有给定的词:
class PrefTree():
...
def __contains__(self, word):
#some code...
...
pt = PrefTree()
...
w = "someword"
if w in pt:
print("Aye, found it.")
但我也希望有一些特殊的__contains__
方法来检查使用特殊规则的成员资格。所以我需要另一个' in
运算符使用此方法检查成员资格。实现它的最佳方法是什么?
答案 0 :(得分:0)
__contains__
个实现中只有一个应该申请给定的w
吗?然后,是什么决定特殊规则或标准规则是否适用? (w
的某些特征?)
如果您的班级用户始终可以使用这两个w
,那么显然您需要两种不同的方法。
但是,如果有关于w
的内容确定要使用哪个实现,则可以定义一个超级类PrefixTree
- PrefixTreeBase
,比如说 - 包含__contains__
的默认实现,然后PrefixTree实现将如下所示:
def __contains__(self, w):
if self._is_special(w):
return self._special_rule(w)
return super().__contains__(w)
_*special*
方法实现您的特殊概念。