title: Why does Python remap my attribute name?
body: <p>If I run this in Python</p>
  
  <pre><code>class Boo(object):
      def __init__(self, x):
          self._x = x
          self.__bingo = 3
          self._info = {'x': x, 'y':42}
      def __dir__(self):
          return ['x']
      @property
      def x(self):
          return self._x
      @property
      def z(self):
          return self._x+1
      def __getattr__(self, key):
          return self._info[key]
  
  b = Boo(44)
  b.__dict__.keys()
  </code></pre>
  
  <p>then it prints</p>
  
  <pre><code>['_info', '_Boo__bingo', '_x']
  </code></pre>
  
  <p>Why does <code>__bingo</code> get renamed? Are double-underscore attributes reserved?</p>