尝试用python中的类构建trie-奇怪的行为

尝试用python中的类构建trie-奇怪的行为,python,class,trie,Python,Class,Trie,我正在尝试用python实现trie。我使用字典+类而不是列表(我知道这不是最优的,但我只是想让它发挥作用) 调试之后,我发现每一层都有字典中的所有字母。我不明白为什么。 以下是我的代码(实现是100%最基本、最直接的): 我猜您希望每个lttr实例都有自己的finish和指针的唯一值。在这种情况下,您需要将它们声明为\uuuu init\uuuu内部的self属性,而不仅仅是在类范围内定义它们 class lttr: def __init__(self): self.f

我正在尝试用python实现trie。我使用字典+类而不是列表(我知道这不是最优的,但我只是想让它发挥作用)

调试之后,我发现每一层都有字典中的所有字母。我不明白为什么。

以下是我的代码(实现是100%最基本、最直接的):


我猜您希望每个
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 = {}