I want to build a trivial trie tree in python, and here is my code
class Node:
    def __init__(self,ref={},num=0):
        self.ref = ref
        self.num = num
def makeTrie(node,s): 
    node.ref.setdefault(s[0],Node())
    if len(s) == 1:
        node.ref[s[0]].num += 1
        return
    makeTrie(node.ref[s[0]],s[1:])
trie = Node()
makeTrie(trie,'abcd')
print trie.ref['d'].num
print trie.ref['a'].ref['b'].ref['c'].ref['d'].num
And I am very confused,the statement print trie.ref['d'].num also have value!!
But I don't know when I insert 'd' in trie ? The code above does't just insert 'd' in trie.ref['a'].ref['b'].ref['c']