title: Pass dict to inheritance after using __new__
body: <p>As part of my script I've done an in depth config class that overrides all the base types to allow for extra control. For example, <code>config['heading']['value'] = 'xyz'</code> runs validation before setting the value.</p>
  
  <p>Anyway, I've just spent the last hour tracking down a bug which seemed to happen intermittently, but in actual fact it turns out it's happening all the time and I just never noticed as it's pretty invisible.</p>
  
  <p>This is trimmed down as much as possible while still keeping a general idea of how it works. If I pass in anything and assign it to <code>cls</code>, then any new instance of the class will replace the variable. How can I access <code>cls._data</code> from <code>_ConfigItem</code> without it changing?</p>
  
  <pre><code>class _ConfigItem(object):
      @property
      def data(self):
          return self._data
  
  class _ConfigItemStr(str, _ConfigItem):
      def __new__(cls, config_dict):
          cls._data = config_dict
          return str.__new__(cls, cls._data['value'])
  
  s1 = _ConfigItemStr({'value': 'test1'})
  
  print(s1)
  #test1
  print(s1.data)
  #{'value': 'test1'}
  
  s2 = _ConfigItemStr({'value': 'test2'})
  
  print(s1)
  #test1
  print(s1.data)
  #{'value': 'test2'}
  </code></pre>
  
  <p>The wanted result in this case is for <code>s1.data</code> to still contain <code>{'value': 'test1'}</code>. Side note that this is in Python 2.7 but I plan on having it forwards compatible.</p>