尝试用python中的类构建trie-奇怪的行为
我正在尝试用python实现trie。我使用字典+类而不是列表(我知道这不是最优的,但我只是想让它发挥作用) 调试之后,我发现每一层都有字典中的所有字母。我不明白为什么。 以下是我的代码(实现是100%最基本、最直接的):尝试用python中的类构建trie-奇怪的行为,python,class,trie,Python,Class,Trie,我正在尝试用python实现trie。我使用字典+类而不是列表(我知道这不是最优的,但我只是想让它发挥作用) 调试之后,我发现每一层都有字典中的所有字母。我不明白为什么。 以下是我的代码(实现是100%最基本、最直接的): 我猜您希望每个lttr实例都有自己的finish和指针的唯一值。在这种情况下,您需要将它们声明为\uuuu init\uuuu内部的self属性,而不仅仅是在类范围内定义它们 class lttr: def __init__(self): self.f
我猜您希望每个
lttr
实例都有自己的finish
和指针的唯一值。在这种情况下,您需要将它们声明为\uuuu init\uuuu
内部的self
属性,而不仅仅是在类范围内定义它们
class lttr:
def __init__(self):
self.finish = 0
self.pointers = {} #for letters to reference class instance
现在,脚本将按预期打印False
。您的lttr类有类变量,但您需要实例变量。类变量在该类的所有实例中都是唯一的,因此您只有一个指针
对象
class lttr:
finish = 0
pointers = {} #for letters to reference class instance
你想要的是
class lttr:
def __init__(self):
self.finish = 0
self.pointers = {}
这是意料之中的事。我没有读过全部内容,但你知道吗?类内声明的变量在该类的所有实例之间共享。修改一个lttr的指针
,每隔一个lttr的指针
也会更改。
class lttr:
def __init__(self):
self.finish = 0
self.pointers = {}