title: Python property and __dict__ method
body: <p>consider this class:</p>
  
  <pre><code>class A(object):
      def __init__(self, name = 'hi'):
          self._name = name
      def getname(self):
          return self._name
      def setname(self, value):
          self._name = value
      name =  property(getname, setname)
  a = A('hello')
  </code></pre>
  
  <blockquote>
    <blockquote>
      <p>a.name  will give me 'hello'</p>
    </blockquote>
  </blockquote>
  
  <p>However, i noticed that, <code>a.__dict__['name'] = 'something'</code>,  and the instance var. 'name' was reset.
  Eg. <code>a.__dict__['_name'] = {'animal' : 'tiger'}</code> and <code>a.name</code> resulted in <code>{'animal' : 'tiger'}</code>.</p>
  
  <p>I was wondering can anybody use something same/similar to corrupt the instance variable's value to anything, just by accessing the <code>__dict__</code> magic method of that particular object? Am i missing something here? </p>