Why is instance variable behaving like a class variable in Python? [duplicate]
Possible Duplicate: “Least Astonishment” in Python: The Mutable Default Argument I have the following code: class Node(object): def __init__(self, value = 0, children = {}): self.val = value self.children = children def setChildValue(self, index, childValue): self.children[index] = Node(childValue) n = Node() n.setChildValue(0,10) print n.children n2 = Node() print n2.children And it prints: {0: <__main__.Node object at 0x10586de90>} {0: <__main__.Node object at 0x10586de90>} So my question is, why is children defined in n2? Children is an instance variable and yet it's acting like a class