title: Two instances of class share same vairable in Python
body: <p>So this is very wierd.  The code below creates 2 instances of MyClass.  One would expect that each has its own copy of the private variable __x which is a dictionary.  However, my_class2 updates the value of __x in my_class1 which should not happen in my opinion?</p>
  
  <p>What am I missing?</p>
  
  <pre><code>class MyClass:
      __x = dict()
  
      def __init__(self, name, init_value):
          self.__x[name] = init_value
  
      def get_value(self):
          return self.__x
  
  
  if __name__ == '__main__':
      my_class1 = MyClass("one", 1)
      print("my_class1: {}".format(my_class1.get_value()))
      my_class2 = MyClass("two", 2)
      print("my_class2: {}".format(my_class2.get_value()))
      print("my_class1: {}".format(my_class1.get_value()))
  </code></pre>
  
  <p>The code above leads to the following output:</p>
  
  <pre><code>my_class1: {'one': 1}
  my_class2: {'one': 1, 'two': 2}
  my_class1: {'one': 1, 'two': 2}
  </code></pre>