title: Python 3 user defined immutable class objects
body: <p>As per my understanding Python user defined class instances are by default immutable. Immutable objects does not change their hash value and they can be used as dictionary keys and set elements.</p>
  
  <p>I have below code snippet.</p>
  
  <pre><code>class Person(object):
      def __init__(self, name, age):
          self.name=name
          self.age=age
  </code></pre>
  
  <p>Now, I will instantiate Person class and create an object and print its hash value.</p>
  
  <pre><code>jane = Person('Jane', 29)
  print(jane.__hash__())
  -9223371933914849101
  </code></pre>
  
  <p>Now, I will mutate jane object and print its hash value.</p>
  
  <pre><code>jane.age = 33
  print(jane.__hash__())
  -9223371933914849101
  </code></pre>
  
  <p>My question is even if jane object is mutable why its hash value is not changing? </p>
  
  <p>Also, I can use mutable jane object as dict key and set element.</p>